如何在特定位置读取文件或从特定位置读取文件?

时间:2018-08-01 07:32:44

标签: c file-io

假设我有一个像这样的文件:

card the red 
parrots massive
belt earth

如果我想从第二个位置开始读取它并打印到第十个位置,请打印它:

ard the r

我将如何实现?

2 个答案:

答案 0 :(得分:2)

最直接的方法是先使用fseek,然后使用fread。该代码省略了错误检查以简化操作。

#include <stdio.h>
#include <string.h>

int main(){
    FILE* f = fopen("File.txt", "r");
    fseek(f, 1, SEEK_SET);
    char buf[10];
    memset(buf, 0, 10);
    fread(buf, 1, 9, f);
    printf("%s\n", buf);
}

答案 1 :(得分:1)

这很简单,可以提供一些示例代码:

FILE *f = fopen("path/to/file", "r");
fseek(f, 1, SEEK_SET);  // set file pointer to 2nd position (0-indexed)
char part[10] = {0};    // array for 9 characters plus terminating 0
fread(part, 1, 9, f);   // read 9 members of size 1 (characters) from f into part
puts(part);             // or any other way to output part, like using in printf()

为此您需要#include <stdio.h>,而在实际代码中,您必须检查所有返回值以查找可能发生的错误

有关更多信息,请参见例如fseek()fread()的手册页。

请注意,还有许多其他可能的方法,例如而不是寻找,您只需阅读并忘记第一个字符,例如与fgetc()。另请参见Some programmer dude's comment -对于文本文件,无论操作系统使用什么,从其中读取的每一行总会给您一个\n,而fseek()在文本文件上运行。磁盘上的实际字节,其中行尾可以编码,例如为\r\n(两个字节)。因此请记住,它可能会引入有趣的错误。