fgetc不是从大txt文件的开头开始的

时间:2013-12-03 01:17:22

标签: c fgetc

我在C中工作并且有一个617kb的文本文件,我试图用fgetc阅读。出于某种原因,fgetc在文件中随机开始。我试过移动文件指针以开始fseek但没有成功。我可以通过较小的文件使fgetc工作得很好。任何帮助表示赞赏。

示例输入是25,000行数据类似于:

Product
23 660
2366 3
237 09
2 3730
23734
23 773
241 46

来源:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void print(FILE *category){

    int ch = 'a';

    while ((ch = fgetc(category)) != EOF){

        printf("%c", ch);
    }

    getchar();
}

int main(void){

    FILE *category = fopen("myFile", "r");

    if (category == NULL){
        puts("category file not found");
    }
    else{

        print(category);    
        fclose(category);

        return 0;
    }

}

1 个答案:

答案 0 :(得分:0)

我怀疑问题出在其他地方。

这个程序的输出在哪里?如果您将其发送到控制台,其回滚缓冲区将不会大到足以包含整个文件。也许它只是看起来,就像fgetc()在一个奇怪的地方开始。

尝试将此程序的输出转移到新的文本文件,并将此文件的大小与输入文件的大小进行比较,例如:

./category_print >output.txt