在C中的scanf()中使用“\ n”
我错误地使用了scanf("%d\n",&val);
在我的一个程序中,我无法理解行为,functionperformance出来。
int main(){ int val; scanf("%d\n", &val); printf("%d\n", val); return 0; }
现在程序需要2个整数input,并打印input的第一个input。 那额外的\n
带来了什么区别?
我试图search,但无法find答案,即使通过手动scanf
。
格式string中的'\n'
或任何空格字符在input中占用整个(可能为空)的空白字符序列。 所以scanf
只在遇到下一个非空白字符或者inputstream结束时才会返回(例如,当input从文件中redirect到结束时,或者在用Ctrl-Dclosuresstdin之后)。
从我的Linux man scanf
中的man scanf
:
指令是以下之一:
一系列空白字符(空格,制表符,换行符等;请参阅isspace(3))。 该指令匹配input中的任意数量的空白,包括无。
顺便说一句, %d
也是一个指令 。
所以你的"%d\n"
有两个指令,第一个指令读取数字,第二个指令读取任意数量的空白,包括行尾。 您必须input任何非空格字符才能停止。