2016-04-14 54 views
-1

請幫忙,我需要讀取一個輸入的txt文件到一個數組並打印出來,以某種方式我不斷收到錯誤信息。讀入數組

#include <stdio.h> 

void reading_into_array(int A[]); 

#define MAXVALS 100 
int 
main(int argc, char *argv[]){ 
    int numbers[100], i; 
    reading_into_array(numbers[MAXVALS]); 
    for(i = 0; i < 100; i++){ 
     printf("%d", numbers[i]); 
    } 
    return 0; 
} 

/*input information*/ 

void 
reading_into_array(int A[]){ 
    double inp; 
    int n = 0; 
    while(scanf("%lf",&inp) == 1){ 
     A[n++] = inp; 
    } 
} 
+0

啓用編譯器警告。 – Lundin

+0

歡迎來到SO。爲了幫助您解決您的問題,我們需要知道:1)代碼的預期行爲和2)實際發生的事情,包括錯誤消息。否則,我們只能猜測;)請看看[how-to-ask](http://stackoverflow.com/help/how-to-ask)頁面。 – m00am

回答

3
  • numbers[MAXVALS]是外的範圍和它的類型不與函數參數相匹配。改爲使用numbers
  • 避免使用具有自動存儲持續時間的未初始化變量的值,該值會調用未定義的行爲。初始化numbersint numbers[100]={0},i;
+0

嘿謝謝你回答我的問題,只是關於你的第二點。因爲我的輸入也包含非整數,所以你知道我怎樣才能printf我的數組的double值? –

+0

對不起,我沒有注意到'inp'是'double'。使用'double'作爲數組元素並使用正確的格式說明符來打印'doubl'e值。 – MikeCAT

0

當調用一個函數,需要一個數組作爲參數,你只需要提供的陣列,例如名稱數字。 「數字[MAXVALS]」將提供此數組的MAXVALth元素的值。這是錯誤的,原因有兩個:

  1. 功能需要的陣列,而不是元素
  2. 陣列具有一個尺寸MAXVAL;它的元素從零開始計數到MAXVAL-1,因此MAXVALth元素根本不存在

如果你希望你的數組中的浮點數,數組聲明爲雙A [MAXVAL]無處不在。

最後一點:reading_into_array函數應該檢查它是否會阻止它將超過MAXVAL的數字放入數組中,否則會冒着損壞內存並導致程序崩潰的風險。