fgetc未在大型txt文件的开头启动

fgetc未在大型txt文件的开头启动,c,fgetc,C,Fgetc,我用C语言工作,有一个617kb的文本文件,我正试图用fgetc读取它。由于某些原因,fgetc在文件中随机启动。我尝试移动文件指针以开始使用fseek,但没有成功。我可以让fgetc处理较小的文件。感谢您的帮助 样本输入为25000行数据,类似于: Product 23 660 2366 3 237 09 2 3730 23734 23 773 241 46 资料来源: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #inc

我用C语言工作,有一个617kb的文本文件,我正试图用
fgetc
读取它。由于某些原因,
fgetc
在文件中随机启动。我尝试移动文件指针以开始使用
fseek
,但没有成功。我可以让
fgetc
处理较小的文件。感谢您的帮助

样本输入为25000行数据,类似于:

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;
    }

}
\define\u CRT\u SECURE\u NO\u警告
#包括
#包括
#包括
作废打印(文件*类别){
int ch='a';
而((ch=fgetc(类别))!=EOF){
printf(“%c”,ch);
}
getchar();
}
内部主(空){
文件*category=fopen(“我的文件”、“r”);
如果(类别==NULL){
放置(“未找到类别文件”);
}
否则{
印刷品(类别);
fclose(类别);
返回0;
}
}

我怀疑问题出在别处

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

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

./category_print >output.txt

是什么告诉您从文件的中间开始读取?输出窗口是否截断?我会修改代码,在大约100个字符后停止写入,只是为了查看当前输出是否从屏幕上滚动出去……或者更好,将输出写入另一个文件而不是屏幕。这可以在根本不修改程序的情况下完成。@Prashant您的编辑带走了信息。尽管您的编辑很好地格式化了文章,OP的“Product\n 23 660\n 2366 3\n 237 09\n 2 3730\n 23734\n 23 773\n 241 46\n”明确显示了合并的行结尾。这与您的编辑不同。是的,我删除了
\n
s。在我的辩护中,我复制了示例文件(在剥离
\n
之后)和我计算机上的源代码,并运行了它。不幸的是,我无法重现问题中的错误,因为它从顶部开始正确地打印出了整个文件。只是用
\n
s再试一次,对我来说是相同的(正确的)行为。@user3023963您的文件中有明确的
\n
s吗?或者你只是指了一条新线?也许我太大胆了,以为你只是想换一条新的线路。这很有效,谢谢。我刚打印到另一个文件,它从开头开始。