我需要从正在处理的项目的文件类型中读取一组特定的字节。
例如,假设我们有以下名为“image”的打开文件:
int fd = open(image, O_RDWR, S_IRWXU);
假设我需要从一开始的偏移开始读取此文件的特定部分,例如,从1024字节开始并以2048字节结束到文件中的部分。
我知道我们已阅读(),
int rd = read(fd, &example, sizeof(1024));
这将读入“example”,前1024个字节。
我知道fseek存在,它会设置一个指针从我想要开始阅读“示例”开始,但只有我有一个FILE类型,对吧?我目前只有一个名字,它是fd,
char *image;
int fd;
我可以在fseek中使用file_name或fd吗?或者有更好的方法吗?
答案 0 :(得分:1)
在Linux上,' pread()'诀窍:
ssize_t pread(int fd, void *buf, size_t count, off_t offset);
它将寻求“抵消”,然后阅读' count' bytes int' buf'。
答案 1 :(得分:1)
lseek
是fseek
的等效函数,使用文件描述符而不是FILE
指针。您也可以使用pread
,如Mahonri Moriancumer所说。