3

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

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

然后创建一个大小为 n 的数组。现在我需要完成所有其余的

 while(c=getchar()!=EOF)

并将数字添加到数组中。数字由 \t 分隔,有时也由 \n 分隔。我该怎么做?我已经思考了一个小时,但仍然没有工作代码。有什么帮助吗?谢谢!

4

1 回答 1

3

除非您感到特别受虐(或由于作业要求而不能),否则您通常会使用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

于 2012-04-08T07:26:18.250 回答