如何在c中将未知数量的整数转换为数组

我需要在c中编写一个程序,它将整数作为用户的输入。

输入示例:

10 20 50 70

用户按Enter键 ,然后输入结束。
我无法想到实现这一目标的条件。 我试着写:

int grades[1000]; int i=0; while(scanf("%d", &grades[i])!=EOF) { i++; } 

它不起作用。

阅读一行用户输入然后解析是@The Paramagnetic Croissant的最佳方法

如果代码无法预先定义输入缓冲区大小,或者必须在进入时解析该行,则使用scanf("%d",... 。发现'\n'时会出现非优雅代码。

 #define N 1000 int grades[N]; int i=0; for (i=0; i 

如果你需要阅读整行,那么读一整行,就这么简单。 如果你谷歌“C读取线”,你很可能最终会阅读fgets()的文档。 然后你google“C将字符串转换为整数”,你会发现在C标准库中存在一个名为strtol()的函数。 有了这两种武器并应用了一些逻辑,你可以推断出这样的东西:

 const size_t max_numbers = 1000; // however many int numbers[max_numbers]; size_t index = 0; char buf[LINE_MAX]; while (index < max_numbers && fgets(buf, sizeof buf, stdin)) { char *p = buf; char *end; while (index < max_numbers && *p && *p != '\n') { numbers[index++] = strtol(p, &end, 10); p = end; } }