文本文件输出末尾出现乱码的原因?

使用C语言对文本文件加密,算法函数先用最简单的 遇到英文字符则以ASCII码+1 的规则进行加密,但现在的问题是,将所有的文本内容转换完成之后,文本末尾会有一段乱码,不知道问题在哪?

//加密函数
void EncryptFile (char buffer[], int file_size, int key) {
    int i;
    for(i=0; i<file_size; i++) {
        if (buffer[i] >= 'A' && buffer[i] <= 'Z' || buffer[i] >= 'a' && buffer[i] <= 'z')
        buffer[i] = buffer[i] + key;
    }
}

还有两个函数一个是打开文件,一个是储存加密文件的

阅读 6.4k
2 个回答

请出给更完整的代码和具体的乱码例子。
猜测可能是你的buffer数组末尾没有给\0,写入了内存中的随机数据。

容我做下妄测: 你的buffer是不是可能开小了? 一般最后一位出问题都是malloc开小了...
然后关于你的rb: 我了解的不多, 但是你需要知道二进制的优点是无损, 不需转换数据, 所以也没有精度损失, 当然, 与之相对, 文本模式(r)它其实会格式化的, 所以精度比不上二进制的.
所以你可以先试下开大buffer, 看有没有继续乱码.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进