c - 如何替换文件中的一行?

标签 c file

我的程序只有当 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/

相关文章:

C 文件检查文件是否为空或包含 ASCII 文本

python - 是否有用于创建特定大小的测试文件的 Python 模块?

c - 让一个简单的 Makefile 工作

c - 在哪里可以找到用于组合字符串的 C 规范?

mysql - 为什么使用 mysql_real_connect 建立的与 MySQL 的单独连接似乎对插入设置了限制?

c - 对象宏的最大大小

c - 为什么窗口不能正确设置光标?

linux - 如何检查文件是否存在于 bash 脚本的特定目录中?

file - 滚动平面文件日志文件未正确滚动

Perl 程序用空格替换制表符