当前位置: 首页> 科技> 能源 > 微信公众号怎么办理_软件开发和程序员哪个工资高_口碑好网络营销电话_seo综合查询什么意思

微信公众号怎么办理_软件开发和程序员哪个工资高_口碑好网络营销电话_seo综合查询什么意思

时间:2025/7/12 20:35:32来源:https://blog.csdn.net/2401_87025655/article/details/142694774 浏览次数:0次
微信公众号怎么办理_软件开发和程序员哪个工资高_口碑好网络营销电话_seo综合查询什么意思

问题引入:如何实现输入一串密码,如:“123   xxxx” ,然后读取并确认,是 -- Y;否 -- N。 

自然的,我们想到用scanf,但是在使用过程中你是否遇到跟我一样的困惑呢?如下:

打印的和输入的不一样???!!!

 这就不禁让我们思考:scanf到底是怎么读取数据的

其实,当我们输入“123 xxxx”时,我们都会敲一下空格键,对不对?

那么,这个时候,我们就向缓冲区输入了

而scanf不读取“空格”、"\n",所以scanf只会把123(隐含‘\0’)读走。

我们可以通过以下例子说明输入数据时还向缓冲区输入了‘\n’👉 

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{char mi_ma[20] = { 0 };printf("输入密码:>");scanf("%s", mi_ma);printf("请确认密码(Y/N):>"); //Y -- Yes ;N -- Noint ch = 0;ch = getchar(); //打算用getchar读取单个字符,即Y或Nif (ch == 'Y'){printf("确认成功\n");}else{printf("确认失败\n");}return 0;
}

运行结果👉

输入密码:>1234
请确认密码(Y/N):>确认失败

 都还没输入Y/N,直接就显示“确认失败”?!!!

————这是因为getchar读取的是‘\n’,而还不及读取Y/N。

改进如下:👉

tip:ch之所以定义为整型,是因为getchar()的返回值为对应字符的ASCII码值。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{char mi_ma[20] = { 0 };printf("输入密码:>");scanf("%s", mi_ma);getchar();             //用来清除‘\n’printf("请确认密码(Y/N):>"); //Y -- Yes ;N -- Noint ch = 0;ch = getchar(); //打算用getchar读取单个字符,即Y或Nif (ch == 'Y'){printf("确认成功\n");}else{printf("确认失败\n");}return 0;
}

运行结果👉

输入密码:>1234
请确认密码(Y/N):>Y
确认成功

 回到一开始的问题👉

问题引入:如何实现输入一串密码,如:“123   xxxx” ,然后读取并确认,是 -- Y;否 -- N。 

认识到 scanf不读取“空格”、"\n"之后,又因为getchar()读取单个字符,所以我们不妨用多次getchar()读取“从空格到‘\n’之间的部分”。题解之一如下:👉

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{char mi_ma[20] = { 0 };printf("输入密码:>");scanf("%s", mi_ma);while (getchar() != '\n'){;}printf("请确认密码(Y/N):>"); //Y -- Yes ;N -- Noint ch = 0;ch = getchar(); //打算用getchar读取单个字符,即Y或Nif (ch == 'Y'){printf("确认成功\n");}else{printf("确认失败\n");}return 0;
}

运行结果👉

输入密码:>123 xxxx
请确认密码(Y/N):>Y
确认成功
关键字:微信公众号怎么办理_软件开发和程序员哪个工资高_口碑好网络营销电话_seo综合查询什么意思

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: