使用系统调用在C中读取文件

时间:2017-09-04 18:07:33

标签: c file

我已尝试过该网站的多个解决方案答案,但无法理解此代码出了什么问题。

我只是想读取文件data.txt并打印它。该文件只包含12个字符" abcd1234efgh"。

fd出现积极但是" br"执行读取时为0。如果有人知道这个

,请帮忙
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
int main(int args,char* vargs[])
{
    int fd = 0;
    fd = open("data.txt",O_RDONLY);
    if(fd<=0)
        printf("Invalid file name");
    else{
        off_t fs =lseek(fd, (off_t) 0, SEEK_END);
        char buf[10];
        off_t br = read(fd,buf,10);
        printf("%s",buf);
    }
    return 0;
}

2 个答案:

答案 0 :(得分:2)

  

lseek(fd,0,SEEK_END);

在文件末尾设置此文件指针后,任何进一步的读取都不成功。只需评论此说明,或根据您的需要进行更改。

答案 1 :(得分:1)

此:

lseek(fd, (off_t) 0, SEEK_END);

寻求文件的 end (偏离0)。当您随后尝试读取时,该点之后没有可用的字节。如果你想从文件的开头读取,你根本不需要寻找。