动态添加单词到char *

时间:2016-02-15 03:13:38

标签: c pointers memory char scanf

我无法弄清楚如何从stdin读取单词并将它们存储在指针中。我需要扩展所需的内存,以便使用所需的最小内存量。

以下是我用int进行的方法,但是使用chars会有点困难。

int *expand(int *source, int size)
{
  int *expansion = (int *)malloc(size * sizeof(int));
  int i;
  for (i=0; i<size-1; i++)
    {
      expansion[i] = source[i];
    }
  free(source);
  return expansion;
}


int main(int argc, char **argv) 
{
  int *input = (int *)malloc(3 * sizeof(int));
  int size = 3;//start at 3 because that's initial size
  int count = 0;//position in array
  fprintf(stdout, "Enter some numbers, and press 0 when you are done.\n");

  int *temp;

  while (1)
    {
      fscanf(stdin, "%d", temp);
      if (*temp == 0)
        {
          break;
        }
      if (count == size - 1)
        {
          size++;
          input = expand(input, size);
        }
      input[count] = *temp;
      count++;

    }

  int i;
  for (i=0; i<size - 1; i++)
    {
      if (i == size - 2)
        {
          fprintf(stderr, "%d\n", input[i]);
          break;
        }
      fprintf(stderr, "%d, ", input[i]);
    }


  free(input);

  return 0;
}

1 个答案:

答案 0 :(得分:0)

你知道realloc()功能吗?

realloc()函数将处理已发布的场景,而不会复制任何数据。 (如果需要,realloc()函数的内部处理复制。