Read()在读取实际数据之前读取垃圾数据

时间:2017-04-07 02:56:18

标签: c

我在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)

读取功能似乎运行了两次。一旦有了一堆垃圾数据,然后是文件中的实际数据。知道如何解决这个问题吗?

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;
}