2014-09-28 27 views
0

我已經被困在一段時間的問題,我需要從形式向用戶讀取輸入,如何讀取不確定長度的數字輸入?

5 1.2 2.3 3.4 4.5 5.6 

其中第一個整數是期待花車的數量,然後按照花車我需要存儲在這個大小的數組中的值。我的代碼不斷返回錯誤是,

... 
int i = 0, j, k; 
float value, *ptr; 
// For every element in inputArr... 
while (i < inputLength) { 
    printf("Enter the number of values in this data set, followed by the values: "); 
    // Get the int value for array creation... 
    scanf("%d ", &j); 
    printf("%d", j); 
    // Save it for the calculations later. 
    *(lengths + i) = j; 
    // Create dynamic array of floats. 
    *(inputArr + i) = calloc(j, sizeof(float)); 
    ptr = *(inputArr + i); 
    // For the rest of the input read the floats and place them. 
    k = 0; 
    while (k < j-1) { 
     scanf("%f ", &value); 
     *(ptr + k) = value; 
     k++; 
    } 
    scanf("%f\n", &value); 
    *(ptr + j - 1) = value; 
    i++; 
} 

當我在上面的輸入中輸入時會引發分段錯誤。 有人可以通過告訴我我做錯了什麼來幫助我嗎?

+0

你沒有說你做了什麼錯誤。 – hugomg 2014-09-28 19:44:35

+0

@hugomg我現在將它添加到問題 - 這是一個分段錯誤。 – brostone51 2014-09-28 19:51:27

+0

你知道哪一行給出了分段錯誤嗎? (你可以在調試器下運行代碼來找出那個) – hugomg 2014-09-28 19:55:35

回答

1

您不必在scanf調用中包含空格和結尾字符串。

scanf("%d", &j); 

I/O

scanf("%d ", &j); 

scanf("%f", &value); 

I/O

scanf("%f\n", &value); 

+0

這解決了我與我遇到的scanf問題有關的問題,它顯示分段錯誤與我如何使用指針有關。謝謝。 – brostone51 2014-09-28 20:00:52

+0

歡迎您! – Ashalynd 2014-09-28 20:27:15

相關問題