【发布时间】:2012-04-09 09:42:15
【问题描述】:
我想知道这是否是解决我的问题的最佳方法。
我知道保存我想要的信息的二进制文件的特定偏移量的值...我想做的是跳转到偏移量,然后从该位置开始读取一定数量的字节。
使用 google 后,我得出的结论是,我最好的选择是使用 fseek() 移动到偏移的位置,然后使用 fread() 从该位置读取一定数量的字节。
我这样想对吗?如果是这样,最好怎么做?即如何将两者结合在一起。
如果我不正确,你会建议我做什么?
非常感谢您的帮助。
马特
编辑:
我按照 fread() 的教程进行了调整,并将其调整为以下内容:
`#include <stdio.h>
int main()
{
FILE *f;
char buffer[11];
if (f = fopen("comm_array2.img", "rt"))
{
fread(buffer, 1, 10, f);
buffer[10] = 0;
fclose(f);
printf("first 10 characters of the file:\n%s\n", buffer);
}
return 0;
}`
所以我使用了文件 'comm_array2.img' 并从文件中读取了前 10 个字符。
但据我了解,这是从文件开始,我想从文件中的某个位置(偏移量)开始
这样更有意义吗?
编辑编号 2:
看来我有点昏暗,所需要做的(从我的尝试看来)就是将 fseek() 放在上面代码中的 fread() 之前,它试图该位置,然后从那里读取。
【问题讨论】:
-
是的。使用 fseek() 和 fread()。你试过什么代码?
-
是的,你是对的,但你的问题或问题是什么?
-
网上有教程展示了如何使用它们。使用搜索词“fseek fread C tutorial”,应该很容易找到一些。你有没有工作过?
-
查找
pread()系统调用。使用流而不是文件描述符来模拟它。也许你给自己写了一个函数,比如:ssize_t fpread(char *buffer, size_t nbytes, size_t offset, FILE *fp);. -
如果您的平台支持,您可以改用
pread(),它会同时执行这两项操作。