几天来我一直在尝试解决这个问题,但它仍然困扰着我。我有一个杂乱的工作程序,并决定对其进行一些清理,但在此过程中出现了问题。程序的一部分将 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 业务,所以我怀疑我可能在这方面或在指针方面犯了错误。如果我从循环中删除所有代码,它就会正常退出。
最佳答案
将行打印到字符串需要新行。
关于c - 程序在 while 循环 fget() 之后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27244800/