gpt4 book ai didi

c - 如何使用 read 将字符正确存储在数组中?

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:55 25 4
gpt4 key购买 nike

我写了下面的代码,但我不明白为什么 read 没有按照我期望的方式存储字符:

char temp;
char buf[256];

while(something)
read (in,&temp, 1);
buf[strlen(buf)] = temp;
}

如果我在阅读时打印 tempbuf 数组的最后一个位置,有时它们会不匹配。例如,字符可能是 '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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com