我正在尝试从stdin获取数字到数组。 stdin中的第一个数字是数组中元素的数量(数字可以是任何int)。 我这样做是为了获得第一个数字:
while(c=getchar()!=' '){
n*=10;
n+=atoi(c);
}
然后创建一个大小为n的数组。 现在我需要经历所有其他的
while(c=getchar()!=EOF)
并向数组添加数字。数字用\ t分隔,有时也用\ n分隔。 我该怎么办?我一直想着一个小时,但仍然没有工作代码。 有帮助吗? 谢谢!
答案 0 :(得分:2)
除非你感觉特别自虐(或者由于家庭作业要求而不能),否则你通常会使用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
。