如何替换文件中的行?

时间:2015-03-11 18:49:15

标签: c file

我的程序仅在主要功能很短时工作,很长时间它停止工作。

我的程序陷入困境:

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

1 个答案:

答案 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++;

适当地使用我的建议。