为什么移动字符时找不到文件的结尾?

问题描述 投票:0回答:1

我尝试输出文件内容,但是我需要为每个字符添加+20,因为文件中的字符会被-20移动。输出内容有效,但到达文件末尾时,Ù循环打印。谁能帮我提供我的代码?

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

        if (holder == '/') // Replace /
        {
            printf(" | Anmerkung: ");
            holder = '\0';
        }

        putchar(holder); // Print in stdout
    }

    printf("\n");
}

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

c file eof
1个回答
0
投票

仔细检查您的身体状况。

(fgetc(dateiGlob) - ENC_NUM) != EOF

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

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

(fgetc(dateiGlob) - ENC_NUM) != (EOF - ENC_NUM)
//                ^^^^^^^^^          ^^^^^^^^^
© www.soinside.com 2019 - 2024. All rights reserved.