我的程序仅在主要功能很短时工作,很长时间它停止工作。
我的程序陷入困境:
while (fgetc(f) != '\n');
void aktivpassziv(int sor, int aktiv, char rendszam[8], char helyzet)
{
int i = 0;
char tp;
FILE *f = fopen(".\\TAXI.txt", "r");
FILE *f2 = fopen(".\\temp.txt", "w");
while ((tp = fgetc(f)) != EOF)
{
if (tp == '\n') i++;
if (i == sor)
{
fprintf(f2, "\n%s\t%d\t%c\n", rendszam, !aktiv, helyzet);
while (fgetc(f) != '\n');
i++;
}
else
{
fprintf(f2, "%c", tp);
}
}
i = 0;
fclose(f);
fclose(f2);
}
我的文件包含号牌: rendszam aktiv hely ASD-123 0 A. ABC-123 0 B. HGK-187 1 F. FDD-333 1 K
答案 0 :(得分:2)
而不是
char tp;
使用
int tp;
如果char
是您平台中的未签名类型,则tp
将永远不会等于EOF
。
并更改行
while (fgetc(f) != '\n')
到
while ( (tp = fgetc(f)) != '\n' && tp != EOF )
以避免在到达文件末尾时陷入无限循环。
在您发布的代码中,您正在使用:
while (fgetc(f) != '\n');
i++;
目前尚不清楚您是打算使用它还是打算使用它:
while (fgetc(f) != '\n')
i++;
适当地使用我的建议。