0
#define LEN 200
int main()
{
int arr[LEN],i;
for (i =0; i < LEN; i++)
while(scanf("%d", arr[LEN]) == 1){
if((arr[LEN] == arr[LEN]+1) || arr[LEN] < 0){
printf("Bad numbers.\n");
}
else if(arr[LEN] == 0){
break;
}
}
printf("Break");
return 0;
}
我的意思是,如果我正在寫是不同的,大於0且arr[5]
是a[12]
或a[any other]
不同,應該將其保存到陣列中的數字。但是,如果arr[LEN] == 0
它應該停止scanf
並將讀取的數字保存到數組中,然後繼續其他的東西。幾個數字後,我的代碼崩潰了。有人能幫助我嗎?陣列,雖然scanf函數崩潰
請花點時間試試鍵入答案的文本框上方的圖標(您始終可以取消更改)。他們可以將您的文本牆變成更可讀,更容易理解的文字,而且只需少量額外的工作。 – Anthon
如果轉換成功,scanf(「%d」,&arr [i])的返回值爲1;如果輸入中有數據但它不與一個十進制整數(例如一個字母)或EOF(總是負數,通常爲-1)不匹配(如果沒有數據要讀取或者出現一些錯誤),它將爲0正在讀取的設備。 ['scanf()'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/scanf.html)函數永遠不會返回輸入的長度。如果有多個轉換規範,它將返回成功轉換的數量 - 但是被抑制的分配('%* d'等)和'%n'不計算在內。 –
我不能對其他方面的好答案進行投票,直到你修正第4項爲止。 –