我的程序只有当 main 函数很短时才工作,当它很长时它就停止工作。
我的程序卡在了这一行:
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);
}
我的文件包含车牌: union 行动 ASD-123 0A ABC-123 0乙 HGK-187 1楼 FDD-333 1K
最佳答案
代替
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++;
适本地使用我的建议。
关于c - 如何替换文件中的一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28994959/