导致此代码中的分段错误的原因是什么?

时间:2015-11-20 01:55:24

标签: c segmentation-fault fault

我的任务是从< 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 个答案:

答案 0 :(得分:1)

realloc()第一个参数是malloc或realloc可以返回的指针,或者是NULL。您需要将digit_holder数组条目初始化为NULL。