C中的用户输入和动态内存分配

User input and dynamic memory allocation in C

我对 C 编程还很陌生,我一直在尝试创建一个首先需要用户输入的程序。一开始,我需要用户输入一定数量的数字,例如:4 12 8 6 5 4 7

基本上,他一直在输入数字,并在数字之间留出空格。然后用户按下回车键,用户输入结束。阅读我已经在网上找到的东西,我看到了这个帖子:

while (...){
      scanf("%c",&c[i]);
         if(c[i]=='\n')
            break;
}

那么,现在,使用动态内存分配,是否可以让用户像这样在一行中输入所有内容,以空格分隔,然后按回车键结束?

我想要发生的事情:

你说:certain amount of numbers;你知道那个号码吗?如果是 - 您可以为那么多值分配内存。如果不是 - 您需要实施一些逻辑来根据需要分配额外的存储空间。例如,将已分配的 space 加倍。您可以将容量增加 1 以避免浪费 space,代价是重复复制您的数据。

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

int main()
{
  char ch = 0;
  int size = 0, capacity = 1;
  int* c = malloc(sizeof(int) * capacity);
  while (1) {
    scanf("%d%c", &c[size], &ch);
    if (ch == '\n')
      break;
    size++;
    if (size == capacity)
    {
      capacity *= 2; // use whatever policy to increase the capacity
      c = realloc(c, sizeof(int) * capacity);
    }
  }
  return 0;
}