使用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个字符.
有人有想法吗?
但文件的结尾似乎过早被发现
听起来很熟悉.
fopen(f4Path, "rb")打开文件时使用.这在Windows上具有重要意义.fprintf,strcat,fgets等),他们将窒息NUL字符.使用fread和fwrite替代.