#include <stdio.h>
int main(int argc, char* argv[]) {
char c;
scanf(" %c", &c);
printf("%c\n", c);
return 0;
}
[root@test]# ./scanf
a
a
[root@test]# ./scanf
h
h
Run Code Online (Sandbox Code Playgroud)
似乎总是匹配空间是否存在,为什么?
格式字符串中的空格(例如空格,制表符或换行符)在输入中匹配任意数量的空格,包括无空格.
http://www.manpagez.com/man/3/scanf/
空间scanf格式的意思是“跳过所有空白”从当前位置。由于大多数scanf格式说明符在尝试读取任何内容之前已经跳过所有空格,因此scanf大多数时间格式中不使用空格。但是,当您使用不忽略空格的格式说明符时,必要时在格式中包含空格(以强制跳过)可能是有意义的。
不忽略空格的说明符是c [and n。因此,在这些说明符之一前面指定一个空格会有所不同。否则,它没有任何区别。在您的具体示例中,空格会被特别忽略,因为您在scanf格式中使用了空格(因为您正在使用%c)。尝试删除空间,看看会发生什么。
| 归档时间: |
|
| 查看次数: |
8822 次 |
| 最近记录: |