gpt4 book ai didi

arrays - 在 C 中从 stdin 获取数字到数组

转载 作者:行者123 更新时间:2023-12-01 21:57:44 25 4
gpt4 key购买 nike

我正在尝试将数字从标准输入获取到数组。 stdin 中的第一个数字是数组中元素的数量(该数字可以是任何 int)。我这样做是为了获得第一个数字:

while(c=getchar()!=' '){
n*=10;
n+=atoi(c);
}

然后创建了一个大小为n的数组。现在我需要完成剩下的所有事情

 while(c=getchar()!=EOF)

并将数字添加到数组中。数字之间用\t 分隔,有时也用\n 分隔。我该怎么做呢?我思考了一个小时,仍然没有找到有效的代码。有什么帮助吗?谢谢!

最佳答案

除非您感觉特别受虐(或者由于家庭作业的要求而不能),否则您通常会使用 scanf 来完成此操作。 :

int n;
int *numbers;

scanf("%d", &n);

numbers = malloc(n * sizeof(*numbers));

for (int i=0; i<n; i++)
scanf("%d", &numbers[i]);

为了更强大的错误处理,您经常希望使用 fgets 一次读取一行。 ,然后使用 sscanf 将其解析为单独的数字(或类似的东西)。

顺便说一句:不,你不应该转换 malloc 的返回值。至int * 。在 C 中这既没有必要也不可取。只是 #include <stdlib.h> ,并如上所示分配结果。如果您的编译器向您发出有关转换的警告(或错误),则意味着发生了以下两种情况之一:要么您忘记 #include <stdlib.h>根据需要,否则您实际上正在编译为 C++。如果您正在编写 C++,请编写真正的 C++,这意味着您不应该使用 malloc完全没有。

关于arrays - 在 C 中从 stdin 获取数字到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10061020/

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