如何从C中的一行获得多个数字?

use*_*879 3 c input scanf

如果我想输入3个数字,我可以编写如下代码:

scanf("%d %d %d", &a, &b, &c);
Run Code Online (Sandbox Code Playgroud)

但是如何从一条线路动态获取输入数量呢?

例如,如果用户输入N(数字),那么我必须从上面的一行获得N个整数输入.

输入和输出应该是:

how many do you want to enter: 5
1 2 3 4 5
sum: 15
Run Code Online (Sandbox Code Playgroud)

Som*_*ken 5

由于scanf返回填充的变量数量,您可以循环,直到scanf没有更多的值要读取或计数匹配:

int count = 0;
printf("how many do you want to enter: ");
scanf("%d", &count);
int val = 0;
int sum = 0;
int i = 0;
while(scanf("%d ", &val) == 1 && i++ < count)
  sum += val;
Run Code Online (Sandbox Code Playgroud)