程序在while循环fget()后停止

时间:2014-12-02 08:20:49

标签: c while-loop fgets

我一直试图在几天内解决这个问题,而且它仍在努力。我有一个糟糕的工作程序,并决定清理一下,但是在这个过程中出了问题。程序的一部分将csv数据(来自文件rfile4)放入一个新文件(tmp41)中供以后使用:

    FILE *report4=fopen(rfile4,"r");
    FILE *tmp41=fopen(tmpfile41,"w+");

    if(!tmp41||!report4) 
    {
        fprintf(stderr, "FAILURE - 'REPORT' INPUT FILE NOT FOUND\n");
        exit(EXIT_FAILURE);
    }

    const char comma[2]=",";
    int nreports=0;

    while(fgets(line,SIZE,report4)!=NULL)
    {
        char linestore[SIZE];
        char mcodecheck[SIZE];

        strncpy(linestore,line,SIZE);
        char *tkndmp=linestore;

        int count1=0;

        while((tkndmp=strtok(tkndmp,comma))!=NULL)
        {       
            count1++;

            if(count1==4)
            {
                sscanf(tkndmp,"%s",mcodecheck);

                if(strcmp(mcode,mcodecheck)==0)
                {
                   nreports++;
                   fputs(line,tmp41);
                }
            }

            tkndmp=NULL;
        }

    }

    printf("SUCCESS");
    fclose(report4);
    rewind(tmp41);

之前找到'mcode'字符串,我已经确认这是正确的。所有文件位置也都正确。数据被正确输入到新文件中,但整个程序在循环后只是永久停顿,因此我从未看到打印过“SUCCESS”。

有什么想法吗?我以前有过工作,主要的变化是清理strtok业务,所以我怀疑我可能犯了错误,或指针。如果我从循环中删除所有代码,它会退出。

1 个答案:

答案 0 :(得分:0)

将行打印到字符串所需的新行。