[英]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.