在scanf()在C使用“\\ N” [重复](Using “\\n” in scanf() in

2019-07-21 18:33发布

这个问题已经在这里有一个答案:

  • 什么是在scanf()的格式字符串结尾空格的效果? 4个回答

余错误地使用scanf("%d\n",&val); 在我的节目之一,我无法理解的行为,功能表现。

int main(){
    int val;
    scanf("%d\n", &val);
    printf("%d\n", val);
    return 0;
}

现在该程序需要2级整数的输入,并打印已输入的第一输入端。 有什么区别应该就是额外的\n带来的?

我试图寻找,但未能找到答案,甚至通过手动scanf

Answer 1:

一个'\n' -或任何空白字符-在格式字符串消耗在输入空格字符整个(可能是空的)序列。 所以scanf ,当遇到下一个非空白字符,或输入流的末尾,只返回(例如,当输入从文件重定向并到达终点,或者你用Ctrl-d关闭标准输入之后)。



Answer 2:

man scanf在我的Linux机器:

一个指令是以下之一:

的空白字符的序列(空格,制表,换行,等;见isspace为(3))。 该指令相匹配的空白,包括没有任何金额,在输入。

BTW, %d也是一个指令

所以,你的"%d\n"有两个指令,第一个读取次数,第二个......好吧读取任意数量的空格,包括您的最终的线。 你必须键入任何非空白字符,使其停止。



文章来源: Using “\\n” in scanf() in C [duplicate]
标签: c scanf