我写了下面的代码,但我不明白为什么 read 没有按照我期望的方式存储字符:
char temp;
char buf[256];
while(something)
read (in,&temp, 1);
buf[strlen(buf)] = temp;
}
如果我在阅读时打印 temp
和 buf
数组的最后一个位置,有时它们会不匹配。例如,字符可能是 'd' 但数组包含 %
或者字符是 0
而数组包含 。
我正在阅读少于 256 个字符,但这并不重要,因为我正在阅读时打印。
我是否漏掉了一些明显的东西?
最佳答案
是的,您没有初始化 buf
-- strlen(buf)
未定义。你应该像这样初始化它:
buf[0] = 0;
此外,最好跟踪长度而不是每次迭代都调用 strlen
以避免 Shlemiel the painter algorithm .
您还应该检查对 read(2)
的调用中的错误——如果它返回 -1 或 0,您应该跳出循环,因为这意味着发生错误或者您到达了文件/输入流的末尾。
关于c - 如何使用 read 将字符正确存储在数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11459839/