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;
}
目录
相关文章
|
Linux C语言 开发者
深入解析Linux环境下的scanf()、sscanf()和fscanf()函数
在C语言中,`scanf()`、`sscanf()`和`fscanf()`是用于输入的三个常用函数。它们允许开发者从标准输入、字符串和文件中按照指定的格式读取数据。在Linux环境下,这些函数被广泛用于处理各种输入。本文将详细介绍这三个函数的用法,包括格式化字符串的语法和一些常见的使用场景。
849 1
|
8月前
|
编译器 C语言 C++
scanf函数
该文介绍了C语言中`scanf`函数用于输入变量值,而`printf`函数用于输出变量值。`scanf`在读取数值时会自动过滤空白字符,允许数据间有空格或换行,不影响解析。`scanf`返回值表示成功读取的变量数,0表示未读取或匹配失败,EOF表示读取错误或文件结尾。常见占位符包括 `%c`(字符)、`%d`(整数)、`%f`(浮点数)、`%s`(字符串)和`%[]`(指定字符集)。对于`%c`,不会忽略空白字符,但可加空格跳过前导空白。文章还提及在VS2022中,`scanf`被认为是不安全的,推荐使用`scanf_s`,并提供了如何在VS中使用`scanf`的解决方法。
154 1
|
7月前
|
C语言
用getchar和putchar读/写字符
用getchar和putchar读/写字符
74 0
|
8月前
|
编译器 C语言 C++
【C语言】分支和循环 ---- if、switch、while、for、goto语句, 理解getchar和putchar函数
【C语言】分支和循环 ---- if、switch、while、for、goto语句, 理解getchar和putchar函数
58 0
scanf和getchar区别
scanf和getchar区别
291 0
c中scanf函数注意点
c中scanf函数注意点
92 0
while(~scanf(“%d“,&a)&&~a)用法
while(~scanf(“%d“,&a)&&~a)用法
132 0
|
C语言 数据安全/隐私保护
【C语言】getchar与scanf输入函数注意事项
【C语言】getchar与scanf输入函数注意事项
118 0
|
编译器 C语言 数据安全/隐私保护
关于【C语言】中scanf与getchar的用法和常见错误详解 2
关于【C语言】中scanf与getchar的用法和常见错误详解
214 0
|
人工智能
scanf函数与getchar函数区别
scanf函数与getchar函数区别
160 0

热门文章

最新文章