【发布时间】:2018-04-30 10:21:34
【问题描述】:
我正在尝试使用系统调用输出文件的内容。代码运行良好,直到我们有一个只包含一行的文件。在这种情况下,输出是没有第一个字符的行。这个字符在哪里丢失了?
ssize_t rres,wres;
char buff[1];
off_t offset;
int fd = open("tester.txt",O_CREAT | O_RDWR , 0664 );
int line_count = 5;
for(count = 0;line_count != 0;count--){
offset = lseek(fd, count, SEEK_END);
rres = read(fd,buff,1);
if(rres < 0){
return -1;
}
if(*buff =='\n') line_count--;
}
count *= -1; // get abs value of bytes
count++;
while(count--){
wres = write(STDOUT_FILENO,buff,read(fd, buff,1)); // output
}
我正在尝试输出文件的最后 5 行。但如果我的行数少于 5 行,则不会输出第一个字符。
【问题讨论】:
-
for循环应该在做什么? -
提供剩余代码。
-
更新代码,少了一行
-
你想达到什么目的?这个 for 循环很奇怪。
-
为什么
line_count != 0被注释掉了?
标签: c file operating-system system-calls