gpt4 book ai didi

c - 如何在C中读取以空格分隔的n个数字

转载 作者:行者123 更新时间:2023-11-30 20:50:39 37 4
gpt4 key购买 nike

我想读n执行期间用户提供的整数,数字之间用空格分隔。最好以数组形式接收。输入1 22 3 445 3 ,结果是,array[0]=1 , array[1]=22等等。我必须用 C 来做。不能使用

scanf("%d %d %d", &var1, &var2, &var3);

因为,我不知道会插入多少个这样的数字。 n的值将在读取此数据之前从用户处读取。

最佳答案

enum { MAX_NUMBERS = 1000000 };  // Choose appropriate upper bound
int n;
if (scanf("%d", &n) == 1 && n > 0 && n < MAX_NUMBERS)
{
int array[n];
for (int i = 0; i < n; i++)
{
if (scanf("%d", &array[i]) != 1)
…process error — terminate loop?…
}
…use array…
}

您可以使用所示的循环,通过 scanf() 读取多个数字。您不知道它们是否全部呈现在一行上,或者每个都在自己的行上,或者连续数字之间是否有许多空行(或所有这些可能性的任何排列)。

scanf() 系列函数基本上不关心换行符——很难强制它们这样做。当您关心基于行的输入时,请使用 fgets()或 POSIX 函数 getline()读取一行并 sscanf() - 或其他字符串解析函数 - 来处理该行。

我假设使用 VLA(可变长度数组)支持 C99。如果没有这种支持,原理是相同的 - 机制有点不同(并且有多种选择来实现)。

关于c - 如何在C中读取以空格分隔的n个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42097168/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com