读取将循环文件结束

时间:2014-11-10 06:33:25

标签: c io

我正在编写一个C代码,它将读取文件内容并将其输出到终端上。 到目前为止,这是我的代码:

rdfd = open(address, O_RDONLY);
read(rdfd, reader, 1);
while(rdfd != 0){ //will end if EOF is reached
    for(x=0; x<1; x++) printf("%c", reader[x]); //for printing at the terminal
    read(rdfd,reader,1);
}

现在,举个例子,我有一个带有ff内容的index.html文件:

<html>
    <body><h1>HELLO WORLD</h1></body>
</html>

该程序将打印如下内容:

<html>
    <body><h1>HELLO WORLD</h1></body>
</html>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> (...)

>将无限期地继续下去。我不知道为什么。那个条件有问题吗?

1 个答案:

答案 0 :(得分:1)

rdfd是您正在阅读的文件的文件描述符。测试它为零(while(rdfd != 0)实际上并没有做任何有用的事情。如果你想测试文件是否正确打开(你应该)测试是否为&lt; 0。

如果您想知道何时到达文件末尾,请检查读取调用的返回值,即:

int bytesRead = read(rdfd, reader, 1);

while (bytesRead > 0)
{ ... 
  bytesRead = read(rdfd,reader,1);
}