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]
我似乎无法弄清楚什么是错的。该代码应该以以下格式读取输入:
名词
0 0 0 0
米
0 0 0
n和m是第一个和第二个数组的长度。
答案 0 :(得分:1)
scanf()
会返回一个值,并且不在所有函数调用中执行任何操作,但此处除外:
scanf("%d",&n))!=EOF
你真正做的事情是函数返回。
您可以通过使用编译器指定的标志(即-Wno-unused-result
)来避免此消息。
PS:scanf()
中的所有换行符都不做任何操作,并且会损害可读性,会丢弃它们。
例如,改变这个:
scanf("\n\n\n\n%d",&m);
到此:
scanf("%d", &m);
注意:生成警告是因为忽略scanf()
的返回值几乎总是一个坏主意。如果您真的不需要担心它是否成功,最好使用(void)scanf(…)
明确地投射结果。