我错误地使用scanf("%d\n",&val);
了我的一个程序,我无法理解行为,功能显示.
int main(){
int val;
scanf("%d\n", &val);
printf("%d\n", val);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在程序需要2个整数输入,并打印输入的第一个输入.额外\n
带来的不同之处是什么?
我试图搜索,但找不到答案,即使通过手册scanf
.
'\n'
格式字符串中的- 或任何空白字符 - 在输入中使用整个(可能为空)的空白字符序列.因此,scanf
当遇到下一个非空白字符或输入流的结尾时(例如,当从文件重定向输入并且到达其结尾时,或者在使用Ctrl-D关闭stdin之后),它才会返回.
从man scanf
我的Linux框中:
指令是以下之一:
一系列空格字符(空格,制表符,换行符等;请参阅isspace(3)).该指令在输入中匹配任意数量的空白,包括无空格.
BTW,%d
也是一个指令.
所以你"%d\n"
有两个指令,第一个读取数字,第二个指令...读取任何数量的空白区域,包括你的行尾.您必须键入任何非空白字符才能使其停止.