我正在尝试将数字从标准输入获取到数组。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
顺便说一句:不,您不应该将return frommalloc转换为 to int *。在 C 中它既没有必要也不可取。 Just #include <stdlib.h>,并如上所示分配结果。如果您的编译器向您发出有关转换的警告(或错误),则意味着正在发生以下两种情况之一:要么您忘记#include <stdlib.h>按要求进行,要么您实际上正在编译为 C++。如果您正在编写 C++,请编写真正的 C++,这意味着您根本不应该使用malloc。