我试图将文件内容读入一个字符串而不读取前两行。
现在我有:
char* LoadDocument(char* name) {
char* buffer = 0;
long length;
FILE* f = fopen(name, "r");
if(f) {
fseek(f, 0, SEEK_END);
length = ftell(f);
fseek(f, 0, SEEK_SET);
buffer = malloc(length);
if (buffer) {
fgets (buffer, 100, f);
}
fclose (f);
}
return buffer;
}
但我不确定如何跳过前两行。另外,看来我的malloc不足以在这里保存整个文件,因为它没有得到整个文件。
答案 0 :(得分:1)
答案 1 :(得分:0)
最简单的方法就是在你的"真实"之前阅读两行。阅读开始:
char line[1024];
fgets(line, sizeof line, f);
fgets(line, sizeof line, f);
您也应该对此进行错误检查,因为文件可能会更短,在这种情况下您无法获得预期的结果。长度也可能太短。如果你真的想支持任何长度,请阅读单个字符,直到找到两行结束。
您的最终fgets()
应该是fread()
来电,以便阅读文件的其余部分。由于最初的跳过,您可能还想补偿丢失的length
。