0

我正在尝试在输入字符后使用 realloc 将元素添加到数组中。这是我的代码:

   #include <stdio.h>
   #include <stdlib.h>

   int main(void)
   {
      int i, j, k;
      int a = 1;
      int* array = (int*) malloc(sizeof(int) * a);
      int* temp;
      for(i = 0;;i++)
      {
          scanf("%d", &j);
          temp = realloc(array, (a + 1) * sizeof(int));
          temp[i] = j;
          if(getchar())
            break;
      }
      for(k=0; k <= a; k++)
      {
          printf("%d", temp[k]);
      }
   }

当我运行这个小程序时,如果我输入例如:2 3 4,它会显示我:20; 我知道内存没有正确分配,但我无法弄清楚问题所在。提前致谢。

4

1 回答 1

0

首先:

    int* array = (int*) malloc(sizeof(int) * a);
    int* temp = array;

    temp = realloc(temp, (a + 1) * sizeof(int));

因为作为第一个参数传递的调用'realloc'指针可能会变得无效。

当然,'realloc' 调用的第二个参数总是等于 2。

顺便说一句,“scanf”在第一个非数字字符后停止读取您的输入字符串。阅读文档以了解正确使用功能。例如关于scanf()realloc()

于 2013-01-08T00:07:44.353 回答