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;
}
目录
相关文章
|
4月前
|
存储 C语言
c语言获取终端输入字符串的函数scanf,gets,fgets
c语言获取终端输入字符串的函数scanf,gets,fgets
110 1
VS中出现的printf,scanf等函数不安全而报错的问题的全面解决方法
VS中出现的printf,scanf等函数不安全而报错的问题的全面解决方法
|
3月前
格式化输出──printf()函数
【6月更文挑战第24天】格式化输出──printf()函数。
53 7
|
4月前
|
编译器 C语言 C++
【C语言】分支和循环 ---- if、switch、while、for、goto语句, 理解getchar和putchar函数
【C语言】分支和循环 ---- if、switch、while、for、goto语句, 理解getchar和putchar函数
37 0
scanf和getchar区别
scanf和getchar区别
153 0
|
9月前
|
安全 C语言 C++
VS中使用scanf函数报错如何解决?
VS中使用scanf函数报错如何解决?
40 0
|
10月前
%md在printf语句和scanf语句中的区别
%md在printf语句和scanf语句中的区别
while(~scanf(“%d“,&a)&&~a)用法
while(~scanf(“%d“,&a)&&~a)用法
88 0
|
C语言 数据安全/隐私保护
【C语言】getchar与scanf输入函数注意事项
【C语言】getchar与scanf输入函数注意事项
80 0
|
编译器 C语言 C++
scanf返回值被忽略的原因及其解决方法(vs2019)
scanf返回值被忽略的原因及其解决方法(vs2019)
455 0