2015-11-20 240 views
2

我的任務是從< 0; 99>加載未知數量的整數,然後打印整數中的第二個數字,後面跟着第二個數字出現的數字的第一個數字。例如:這段代碼中導致段錯誤的原因是什麼?

對於數字:

1 2 5 2 25 27 93 4 93 93 58 51 

我應該得到這樣的輸出:

0 | 12245 
2 | 57 
5 | 18 
9 | 333 

我認爲錯誤是這裏的某個地方:

digit_holder[number/10] = (int *) realloc(digit_holder[number/10],(realloc_count[(number/10)]*sizeof(int))); 
digit_holder[number/10][realloc_count[number/10]-1] = number % 10; 

全碼:

int main() 
{ 
    int i,j, number,realloc_count[10], *digit_holder[10]; 
    for (i = 0; i<10;i++) 
    realloc_count[i] = 0; 
    while (scanf("%d",&number) > 0){ 
    realloc_count[number/10]++; 
    digit_holder[number/10] = (int *) realloc(digit_holder[number/10],(realloc_count[(number/10)]*sizeof(int))); 
    digit_holder[number/10][realloc_count[number/10]-1] = number % 10; 
    } 
    for (i=0;i<10;i++){ 
    printf("%d | ",i); 
    for (j = 0; j < realloc_count[j]; j++) 
    printf("%d",digit_holder[i][j]); 
    putchar('\n'); 
    } 



    return 0; 
} 

回答

1

realloc()第一個參數是malloc或realloc返回的指針,或者是NULL。您需要將digit_holder數組條目初始化爲NULL。

相關問題