【发布时间】:2016-06-09 11:22:45
【问题描述】:
我是编程新手。当我在扫描一个整数后输入一个 char 数组时,我感到很困惑。它无法正常工作。 代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[30];
int x,y;
scanf("%d",&x);
scanf("%[^\n]",a);
scanf("%d",&y);
printf("%d\n%s\n%d",x,a,y);
return 0;
}
【问题讨论】:
-
这就是你检查
scanf()的返回值的原因。 -
这个我看不懂。
-
C11 标准草案 n1570:7.21.6.2 fscanf 函数返回 16 如果在第一次转换(如果有)完成之前发生输入失败,fscanf 函数将返回宏 EOF 的值。否则,该函数返回分配的输入项的数量,如果发生早期匹配失败,该数量可能少于提供的数量,甚至为零。
-
除非答案建议检查来自
scanf()的返回值,否则这不是一个好的答案。节省时间 1) 始终检查输入函数的返回值。阅读文档以了解预期的返回值。 2) 使用fgets()比使用scanf()更好。
标签: c