如何解决数据的 fread 不等于相同数据的 fwrite
int main(){
char * saveMe = "123 ABC";
int len = strlen(saveMe);
int charSize = sizeof(char);
char * loadMe = malloc(len+1);
FILE * fp = fopen("test.txt","w");
fwrite(saveMe,charSize,len,fp);
fclose(fp);
fp = fopen("test.txt","r");
fread(loadMe,fp);
fclose(fp);
printf((strcmp(saveMe,loadMe)) ? "Strings are the Same.\n" : "Strings are different.\n");
free(loadMe);
return 0;
}
如果我保存字符串然后重新加载它,“字符串是不同的”。
我确定这很简单,但我已经尝试了所有我能想到的方法。
解决方法
我在这里看到两个错误。
-
fopen("test.txt","w");
应为...,"wb"
或...,"rb"
,对于所有将与fopen
或fread()
一起使用的fwrite()
调用。我怀疑你的平台是 Windows 并且因为这个错误它正在破坏你的密文。 -
(strcmp(saveMe,loadMe)) ? same : different
但strcmp
返回 0 表示相同。
因为减持不知道有没有这个来;但由于嵌入空值的趋势,您不能在密文上使用 strcmp()
;你必须自己跟踪另一个变量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。