[英]How to read characters from stdin into an array in c?
我上一次做 C 是在 1991 年,现在我正在帮朋友做作业。
他必须将标准输入中的字符放入一个数组中。 看起来很简单。 我想我会用 这个问题作为参考点。
我们有这个:
printf("Input the line\n");
i=read(0, arg, sizeof(char)*9);
IIUC 为我们提供了字符,根据答案注释,我们应该能够将字符直接放入 arg 数组中,如下所示:
while ((c = getchar()) != '\n' && c != EOF && i2<9 ) {
arg[i2] = c;
i2++;
}
然而,打印这个(repl.it 链接) :
./main
Input the line
123 456 789
893 456
所以看起来即使我试图通过在 while 循环中添加i2<9
来将其限制为索引 [0,8],它仍然会抓取89
并将其放在数组的开头,因为数组只适合 9 个字符.
为什么是这样? 我是否以正确的方式解决这个问题?
我们不允许使用 fpurge。 我假设教授正在尝试教他们如何手动执行此操作...
我不明白你在这里想做什么,
while ((c = getchar()) != '\n' && c != EOF && i2<9 ) {
arg[i2] = c;
i2++;
}
上述循环主要用于在read
后消耗输入 stream 中的剩余输入。
也就是说,与
i=read(0, arg, sizeof(char)*9);
您正在将9
字符读入arg
但您输入了11
字符和\n
。
因此arg
将有内容,
123 456 (null) <---contents
01234567 8 <---indexes
还记得89\n
留在 stream 中。 因此,使用while
循环,您可以从索引0
将89
读入arg
数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.