假设我有一个像这样的文件:
card the red
parrots massive
belt earth
如果我想从第二个位置开始读取它并打印到第十个位置,请打印它:
ard the r
我将如何实现?
答案 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
(两个字节)。因此请记住,它可能会引入有趣的错误。