在跳过前两行时将文件内容读入字符串

时间:2014-05-08 13:52:35

标签: c io

我试图将文件内容读入一个字符串而不读取前两行。

现在我有:

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不足以在这里保存整个文件,因为它没有得到整个文件。

2 个答案:

答案 0 :(得分:1)

一种解决方案是将read完整文件放入缓冲区,手动查找第二行的末尾,并将剩余数据move放到缓冲区的开头。

另外,如果要将缓冲区用作字符串,请不要忘记添加字符串终止符。

答案 1 :(得分:0)

最简单的方法就是在你的"真实"之前阅读两行。阅读开始:

char line[1024];

fgets(line, sizeof line, f);
fgets(line, sizeof line, f);

您也应该对此进行错误检查,因为文件可能会更短,在这种情况下您无法获得预期的结果。长度也可能太短。如果你真的想支持任何长度,请阅读单个字符,直到找到两行结束。

您的最终fgets()应该是fread()来电,以便阅读文件的其余部分。由于最初的跳过,您可能还想补偿丢失的length