在c中读取和写入带有特殊字符的文件

ruc*_*tiv 2 c file character

使用C语言,我试图操纵openssl生成的一些文件,并包含很多(非常)特殊字符.但文件的结尾似乎过早被发现.例如,查看我的程序的摘录,它应该将文件复制到另一个文件:

(为简单起见,我没有显示文件打开的测试,但我在我的程序中这样做)

char msgcrypt[FFILE];
FILE* fMsg = fopen(f4Path,"r");
while(fgets(tmp,FFILE,fMsg) != NULL) strcat(msgcrypt,tmp);
fclose(fMsg);
FILE* fMsg2 = fopen(f5Path,"w");
fprintf(fMsg2,"%s",msgcrypt);
fclose(fMsg2);
Run Code Online (Sandbox Code Playgroud)

这是位于f4Path的文件内容:

Salted__X¢~xÁïÈú™xe?^„?¯?˜<åD
Run Code Online (Sandbox Code Playgroud)

现在位于f5Path的文件内容:

Salted__X¢~xÁïÈú™xe?^„?¯
Run Code Online (Sandbox Code Playgroud)

请注意,缺少4个字符.

有人有想法吗?

cni*_*tar 5

但文件的结尾似乎过早被发现

听起来很熟悉.

  • fopen(f4Path, "rb")打开文件时使用.这在Windows上具有重要意义.
  • 不要使用字符串函数(fprintf,strcat,fgets等),他们将窒息NUL字符.使用freadfwrite替代.