使用realloc向数组添加元素

时间:2013-01-07 23:57:40

标签: c malloc realloc

我正在尝试使用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; 我知道内存没有正确分配,但我无法弄清楚问题。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

首先:

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

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

因为在调用'realloc'指针后,第一个参数可能会变为无效。

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

顺便说一下'scanf'会在第一个非数字字符后停止读取输入字符串。阅读正确使用功能的文档。例如关于scanf()realloc()