我在C中使用read()函数时出现问题。
我有一个文件让我们说fileX有内容:
Data to be outputted
但是,当我打开文件并使用read时,我会使用下面的代码获取垃圾数据
ssize_t reader = 0;
ssize_t writer = 0;
char buffer[256];
reader = read(myFile, buffer, 256);
//check if reader is -1, if so then exit(1)
writer = write(1, buffer, 256);
//check if writer is -1, if so then exit(1)
读取功能似乎运行了两次。一旦有了一堆垃圾数据,然后是文件中的实际数据。知道如何解决这个问题吗?
答案 0 :(得分:1)
你确定你的缓冲区填充'\ 0',用'\ 0'结束? 你用256写入写入 - 在第3个arg中
#include <fcntl.h>
int main() {
const int max_size = 256;
char buffer[max_size] = {};
int my_input = open("input", O_TEXT, S_IREAD);
ssize_t reader;
ssize_t writer;
reader = read(my_input, buffer, max_size);
if(reader != -1)
writer = write(1, buffer, reader);
return 0;
}