从某个偏移量开始检查文件而不读取整个文件

标签 c arrays optimization byte

我想做的是打开一个文件(很大)并从某个字节点读取到一个偏移量。

在 c# 中,这可以通过以下方式完成:

File.ReadAllBytes(file).Skip(50).Take(10).ToArray();

问题在于它会读取整个文件,但由于我的文件可能很大,这也需要很长时间。有没有一种方法可以读取与此方法类似的文件的一部分,但无需读取整个文件?最好在c中

最佳答案

是的,使用 fseek()移动(“寻找”)到所需位置的标准库函数:

FILE *in = fopen("myfancyfile.dat", "rb");
if(fseek(in, 50, SEEK_SET) == 0)
{
  char buf[10];
  if(fread(buf, sizeof buf, 1, in) == 1)
  {
    /* got the data, process it here */
  }
}
fclose(in);

关于从某个偏移量开始检查文件而不读取整个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20141462/

相关文章:

c - do..while 循环 - 当条件满足时不中断

c - 将 malloc 用于结构的多维数组

用于删除重复项的 python 脚本需要 24 小时以上来循环遍历 10^7 条记录

optimization - GCC -mthumb 反对 -marm

c - Python 对字节的解释。 (C 内存复制)

最长公共(public)子序列的代码未正确显示结果

php - php-src 中的 “zend_execute” 函数在哪里?

c - c中的多维数组

arrays - WKPickerItems 和范围

c++ - 编译器的提示以帮助其完成优化任务