我正在编写一个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>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> (...)
>
将无限期地继续下去。我不知道为什么。那个条件有问题吗?
答案 0 :(得分:1)
rdfd是您正在阅读的文件的文件描述符。测试它为零(while(rdfd != 0)
实际上并没有做任何有用的事情。如果你想测试文件是否正确打开(你应该)测试是否为&lt; 0。
如果您想知道何时到达文件末尾,请检查读取调用的返回值,即:
int bytesRead = read(rdfd, reader, 1);
while (bytesRead > 0)
{ ...
bytesRead = read(rdfd,reader,1);
}