我一直试图在几天内解决这个问题,而且它仍在努力。我有一个糟糕的工作程序,并决定清理一下,但是在这个过程中出了问题。程序的一部分将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业务,所以我怀疑我可能犯了错误,或指针。如果我从循环中删除所有代码,它会退出。
答案 0 :(得分:0)
将行打印到字符串所需的新行。