在scanf函数的格式字符串中换行符的意义是什么?

时间:2016-02-11 18:40:22

标签: c

#include<stdio.h>
int main()
{
int a,b;
printf("enter two numbers ");
scanf("%d \n%d",&a,&b);
printf("%d  %d",a,b);
return 0;
}

当我输入像3和5这样的输入时,问题是即使我在它们之间没有任何换行符输入,然后scanf函数也会扫描输入值,但在正式字符串中我说明了下一个应该在换行符之后扫描输入,以便在几个空格之后如何扫描下一个输入。

2 个答案:

答案 0 :(得分:4)

scanf格式字符串中的空白区域告诉scanf(和系列)读取并忽略输入中的空白区域。在格式中使用什么类型的空白字符并不重要:空格,换行符和制表符都是相同的。

但是,对于所有格式,您实际上并不需要 。大多数"%d"格式会自动读取和忽略前导空格,包括{{1}}格式。

答案 1 :(得分:1)

" \n"格式字符串中的"%d \n%d"将“吃掉”isspace定义的所有空白字符,包括换行符。

要强制从单独的行中读取整数,请改为使用:

if(scanf("%d%*[^\n]\n%d",&a,&b) != 2) return EXIT_ERROR;