【发布时间】:2018-04-02 11:47:45
【问题描述】:
int main()
{
int i, n, m;
while((scanf("%d",&n))!=EOF)
{
int a[n];
for(i=0; i<n; i++){
scanf("\n\n%d",&a[i]);}
scanf("\n\n\n\n%d",&m);
int b[m];
for(i=0;i<m;i++){
scanf("\n\n\n\n\n\n%d",&b[i]);}
int count=0, place[n];
for(i=0; i<n; i++){
if(array_cmp(i,m,a,b)==1){
count++;
place[i]=i;
}
}
}
我不断收到错误消息, 警告:忽略'scanf'的返回值,用属性warn_unused_result [-Wunused-result]声明
我似乎无法弄清楚出了什么问题。该代码应该以以下格式读取输入:
n
0 0 0 0
米
0 0 0
n 和 m 是第一个和第二个数组的长度。
【问题讨论】:
-
可能是因为你正在输入 scanf() 返回的结果。
-
n2 在这里未声明,还有array_cmp..
-
scanf("\n\n\n\n\n\n%d"等价于scanf("%d"。 -
应该
while((scanf("%d",&n))!=EOF)是while((scanf("%d",&n))==1) -
@EdHeal:是的,测试应该是
== 1,因为输入中的字母或标点字符会使scanf()返回0,因此循环将无限期地继续,但永远不会读取任何数字。