【发布时间】:2013-12-14 16:09:46
【问题描述】:
我正在使用 C 中的一个简单代码读取这个文本文件(逐个字符):
这是文件
printf 函数不会打印任何东西!
这只是一行文本(但它发生在文本文件的最后一行)。
这是代码:
int main(int argc, char *argv[])
{
int fd, bytes_read;
char buf;
if((fd = open(argv[1], O_RDONLY)) == -1)
{
perror("open");
exit(EXIT_FAILURE);
}
do
{
if((bytes_read = read(fd, &buf, sizeof(buf))) == -1)
{
perror("read");
exit(EXIT_FAILURE);
}
printf("%c", buf);
}
while(bytes_read != 0);
close(fd);
}
谢谢!
【问题讨论】:
-
最后一行后面有一行空格吗?
-
不...只是那一行文字!我知道如果有一个额外的空白行,问题就会消失,我想了解原因。谢谢!
-
1.检查
open()和read()(...和close())的返回值是否有错误。 2.bytes_read的类型应该是size_t。 -
@Crozin:读取返回一个
ssize_t(一个有符号类型)。size_t未签名,将ssize_t转换为size_t实际上会破坏返回的错误代码。 -
@datenwolf 当然你是对的,谢谢你的纠正。