文件按字读取存储引发的一点问题

问题比较复杂:
1.我需要将二进制文件提取出来,加密后存入另一文件
2.由于原始文件按字节(fgetc)提取加密后会变成很大的数(>255),因此不能用fputc来存加密后的数据,这就不可避免的用到putwc。但是putwc会使加密文件变大(由char变成了wchar),而我又想保持源文件大小。
3.我想到了按字提取fgetwc、按字存储fputwc,但是按字提取不能很好解决文件结尾的判定,如果源文件只有“abc”三个字符,那么按字提取只能提取出来“ab”和“65535”(结尾标志),跟“ab”两个字符提取结果一样。
怎么解决上述问题?

fgetc读2次代替fgetwc,奇数字节结尾特殊处理下

fgetwc读之前先用fgetc读两次判断是否有'\n'或文件结束符,然后再把读位置退后两个字节