gpt4 book ai didi

c - 在c中获得多个输入的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 19:26:36 24 4
gpt4 key购买 nike

我得到了一个任务来获取输入列表并使用它(使用本身并不重要)。
输入将仅以 EOF 结束。我需要获取一个数字列表并填充一个大小为 n 的数组。每个数字都用白色字符分隔。我的输入也需要检查,因为它没有被 promise 它是有效的。
我有几种方法可以做到这一点,我想知道什么是最好的以及为什么。
(也许我什至没有考虑最好的解决方案,所以非常欢迎任何建议)
我使用ubuntu。
解决方案1:
在检查白色字符以分隔数字时使用 getchar() 直到 EOF。
解决方案2:
使用 scanf() 做这样的事情:

char str[256];

while (scanf("%s", str) != EOF)
{
// Check the input and add to the array.
}
我认为这是最好的解决方案,但问题是我需要按两次 control + d 才能结束输入,这是无效的。
解决方案3:
使用 fgets() 并读取缓冲区并使用缓冲区。我认为这会使问题复杂化,因为一个整数可以跨 2 个缓冲区拆分。
感谢所有帮助者。

最佳答案

通常,使用 scanf 验证输入很难。但是对于像这样的简单输入,您可以执行以下操作:

while( scanf("%d", &n) == 1 ){
/* add n to the array. */
}
if( ferror(stdin) ){
fprintf(stderr, "Read error\n");
} else if( ! feof(stdin) ){
fprintf(stderr, "Invalid input\n");
}
while 循环将在 EOF 或无效条目时终止。 feof()将决定输入流是否关闭。

关于c - 在c中获得多个输入的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70280084/

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