[英]C: Ignoring return value of scanf
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;
}
}
}
我不断收到错误消息,警告:忽略使用属性warn_unused_result声明的'scanf'返回值[-Wunused-result]
我似乎无法找出问题所在。 该代码应该以以下格式读取输入:
ñ
0 0 0 0
米
0 0 0
n和m是第一和第二数组的长度。
scanf()
返回一个值,并且您在所有函数调用中均不执行任何操作,除了此处:
scanf("%d",&n))!=EOF
函数实际返回的位置。
通过使用编译器指定的标志(即-Wno-unused-result
)进行编译,可以避免此消息。
PS:您在scanf()
拥有的所有换行符都无济于事,并且破坏了可读性,将其丢弃。
例如,更改此:
scanf("\n\n\n\n%d",&m);
对此:
scanf("%d", &m);
注意:生成警告是因为忽略scanf()
的返回值几乎总是一个坏主意。 最好在那些真的不需要担心它是否成功的罕见情况下,使用(void)scanf(…)
显式地转换结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.