当我使用fd指针来读()或写()时,fd指针是否会被递增,如何控制递增?

我试图从一个文件中读取一行,并返回一个指向下一行开头的指针,但我不明白当我使用fd一次读取10个字符时,fd会发生什么。我只能使用read、write、open和malloc。

例子 file.txt (有 \n 被明确显示)。)

Sphinx of black quartz, judge my vow.\n
Pack my box with five dozen liquor jugs.\n
The quick brown fox jumps over the lazy dog.\n

main.c:

int fd = open("file.txt", O_RDONLY);
int fd2 = open("oneline.txt", O_CREAT | O_WRONLY);
char *buffer = (char *)malloc(sizeof(char) * 10);

read(fd, buffer, 10);
write(fd2, &buffer, 10);

1) 将 fd 指的是 “十一 “字 file.txtfd2 在EOF oneline.txt?


继续 main.c 的例子。

int newline = 0, found = 0;
while(found == 0)
{
    read(fd, buffer, 10);
    for(int i = 0; buffer[i] != '\n' || i < 10; i++)
    {
        newline++;
        if(buffer[i] == '\n')
            found = 1;
    }
}

如果 fd 指向第41个字符 file.txt (while循环运行了4次,’\n’是第38个字符)。整数的值是 newline 等于38。

2) 如何让fd指向’\n’字符之后的第39个字符?

解决方案:

你说的是 文件偏移量. 对于你的第一个问题,是的,你关于偏移量的位置是正确的。对于你的第二个问题,你可以使用 lseek 将偏移量移回来。如果要向后移动2个字符,你可以执行 lseek(fd, -2, SEEK_CUR).

给TA打赏
共{{data.count}}人
人已打赏
解决方案

量子化类型2的问题

2022-5-14 3:00:07

解决方案

如何在React Native上检测用户什么时候得到一个View,并在得到这个位置后做一些事情?

2022-5-14 3:00:12

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索