2011-09-23 35 views
2

以下格式字符串的声明:帮助在scanf

int i; 
scanf("%d ",&i); 

为什么在格式字符串的末尾空间导致scanf函数接受两个输入端,而不是1?

+1

你是什么意思“接受两个输入”?你的输入是什么样的? –

回答

4

格式字符串末尾的空格告诉scanf在第一个整数之后吃掉空格。它实际上并不接受第二个输入。当你输入第二个值时,scanf会看到它返回的空白完成,将第一个整数存储到变量i中。 “第二个输入”仍然在标准输入流中。

+0

在第一个整数之后吃掉空白是什么意思?吃stdin缓冲区中的空白区域?我什么时候需要吃掉空白。请举个例子。 – Bruce

+0

你不**有吃空白。您正在指示scanf在读取整数后吃任何空格。直到scanf看到EOF或非空白的东西,它才能返回。 –