scanf与getchar连用的注意事项

简介: 这里主要讲述scanf函数和getchar函数连续使用的注意事项

在用scanf输入后,用回车键换行,且下一语句为getchar时,getchar会被回车键(相当于'/n')使用,因为scanf不能读取回车键、空格键等。

#define _CRT_SECURE_NO_WARNINGS
int main()
{
    char password[10] = { 0 };
    printf("输入密码:");
    scanf_s("%s", password);
    printf("请确认密码:Y/N");
    int ch = getchar();
    if (ch == 'Y')
        printf("确认成功!");
    else
        printf("确认失败!");
    return 0;
}

当我们输入密码回车后,将会直接结束程序,因为此时'/n'被getchar读取了,导致确认失败。

如果我们想正常使用getchar时,需要在二者之间再加上一个getchar,用来吸收'/n',以保证原本意图的getchar的正常使用。

#define _CRT_SECURE_NO_WARNINGS
int main()
{
    char password[10] = { 0 };
    printf("输入密码:");
    scanf_s("%s", password);
    getchar();
    printf("请确认密码:Y/N");
    int ch = getchar();
    if (ch == 'Y')
        printf("确认成功!");
    else
        printf("确认失败!");
    return 0;
}
目录
相关文章
|
6月前
|
存储 C语言
c语言获取终端输入字符串的函数scanf,gets,fgets
c语言获取终端输入字符串的函数scanf,gets,fgets
144 1
VS中出现的printf,scanf等函数不安全而报错的问题的全面解决方法
VS中出现的printf,scanf等函数不安全而报错的问题的全面解决方法
|
23天前
使用 printf() 与 %c 格式化输出一个字符
【10月更文挑战第12天】使用 printf() 与 %c 格式化输出一个字符。
15 4
|
5月前
格式化输出──printf()函数
【6月更文挑战第24天】格式化输出──printf()函数。
69 7
|
6月前
|
编译器 C语言 C++
【C语言】分支和循环 ---- if、switch、while、for、goto语句, 理解getchar和putchar函数
【C语言】分支和循环 ---- if、switch、while、for、goto语句, 理解getchar和putchar函数
44 0
scanf和getchar区别
scanf和getchar区别
169 0
|
6月前
|
C语言 C++
C语言变量、地址、字符及printf()/sizeof()/scanf()函数介绍
C语言变量、地址、字符及printf()/sizeof()/scanf()函数介绍
31 0
|
12月前
%md在printf语句和scanf语句中的区别
%md在printf语句和scanf语句中的区别
while(~scanf(“%d“,&a)&&~a)用法
while(~scanf(“%d“,&a)&&~a)用法
101 0
|
C语言 数据安全/隐私保护
【C语言】getchar与scanf输入函数注意事项
【C语言】getchar与scanf输入函数注意事项
91 0