2015-11-20 202 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。

相关问题