Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在C中从标准输入到数组的数字_Arrays_Getchar_Atoi - Fatal编程技术网

Arrays 在C中从标准输入到数组的数字

Arrays 在C中从标准输入到数组的数字,arrays,getchar,atoi,Arrays,Getchar,Atoi,我想把数字从标准输入到数组中。stdin中的第一个数字是数组中的元素数(该数字可以是任意整数)。 我这样做是为了得到第一个号码: while(c=getchar()!=' '){ n*=10; n+=atoi(c); } 然后创建了一个大小为n的数组。 现在我需要把剩下的都做完 while(c=getchar()!=EOF) 并将数字添加到数组中。数字之间用\t分隔,有时也用\n分隔。 我该怎么做?我已经思考了一个小时,但仍然没有一个有效的代码。 有什么帮助吗? 谢谢 除非你感到特别受虐(

我想把数字从标准输入到数组中。stdin中的第一个数字是数组中的元素数(该数字可以是任意整数)。 我这样做是为了得到第一个号码:

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将逐个读取字符。非常感谢您,伙计!祝您愉快:)