Arrays 在C中从标准输入到数组的数字
我想把数字从标准输入到数组中。stdin中的第一个数字是数组中的元素数(该数字可以是任意整数)。 我这样做是为了得到第一个号码:Arrays 在C中从标准输入到数组的数字,arrays,getchar,atoi,Arrays,Getchar,Atoi,我想把数字从标准输入到数组中。stdin中的第一个数字是数组中的元素数(该数字可以是任意整数)。 我这样做是为了得到第一个号码: while(c=getchar()!=' '){ n*=10; n+=atoi(c); } 然后创建了一个大小为n的数组。 现在我需要把剩下的都做完 while(c=getchar()!=EOF) 并将数字添加到数组中。数字之间用\t分隔,有时也用\n分隔。 我该怎么做?我已经思考了一个小时,但仍然没有一个有效的代码。 有什么帮助吗? 谢谢 除非你感到特别受虐(
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]);
intn;
整数*数字;
scanf(“%d”和“&n”);
数字=malloc(n*sizeof(*数字));
对于(int i=0;iWaw,我不知道我可以这样做!但是,请您解释一下,为什么忽略了数字之间的任何内容?以及第二次扫描如何从第一次扫描停止的位置继续进行?“%d”扫描转换在数字之前跳过空白(制表符和新行都被视为空白)。打开文件时,它有一个“当前位置”指示器,该指示器由从中读取的函数更新(getc
、scanf
、fread
等)但是在%c的情况下,一个空格是正确的吗?啊,是的,我知道当前位置,但不知道scanf也使用它。@米纳哈尼:是的,%c将读取空格。事实上,%c和%s之间的根本区别是%s跳过前导空格,然后读取到下一个空格,其中%c只读取相同数量的字符rs,如您所指定。因此,如果在stdin上是“StringA StringB StringC”,则scanf%s将自动读取3个字符串并忽略空格,但scanf%c将逐个读取字符。非常感谢您,伙计!祝您愉快:)