为什么在移动字符时找不到文件末尾?

Why is the end of a file is not found, when moving the chars?

我尝试输出一个文件内容,但是我需要给每个字符加上+20,因为文件中的字符移动了-20。输出内容有效但到达文件末尾,Ù 循环打印。谁能帮我处理代码?

    while ((holder = (fgetc(dateiGlob)-ENC_NUM)) != EOF) // ENC_Num = 20
    {
        if (holder == ';') // Replace ; 
        {
            printf("\n");
            holder = '[=10=]';
        }

        if (holder == '/') // Replace /
        {
            printf(" | Anmerkung: ");
            holder = '[=10=]';
        }

        putchar(holder); // Print in stdout
    }

    printf("\n");
}

当ENC_NUM设置为0时,再次发现EOF。 我需要改变什么? 谢谢!

仔细看看你的 while 条件。

(fgetc(dateiGlob) - ENC_NUM) != EOF

如果您设置 ENC_NUM = 0,条件变为 fgetc(dateiGlob) != EOF,这是您在文件结束时停止读取文件所需要的。

现在,如果您想更改条件的左侧(通过使 ENC_NUM 成为非零整数),您还需要以相同的方式更改其右侧(为了保留逻辑):

(fgetc(dateiGlob) - ENC_NUM) != (EOF - ENC_NUM)
//                ^^^^^^^^^          ^^^^^^^^^