数据的 fread 不等于相同数据的 fwrite
fread of data isn't equal to fwrite of that same data
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, charSize, len, 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"
对于将与 fread()
或 fwrite()
。我怀疑你的平台是 Windows 并且由于这个错误它正在破坏你的密文。
(strcmp(saveMe, loadMe)) ? same : different
但 strcmp
returns 0 相同。
不知道你有没有这个,因为减价了;但是由于嵌入空值的趋势,你不能在密文上使用 strcmp()
;你必须自己跟踪另一个变量。
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, charSize, len, 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"
对于将与fread()
或fwrite()
。我怀疑你的平台是 Windows 并且由于这个错误它正在破坏你的密文。(strcmp(saveMe, loadMe)) ? same : different
但strcmp
returns 0 相同。
不知道你有没有这个,因为减价了;但是由于嵌入空值的趋势,你不能在密文上使用 strcmp()
;你必须自己跟踪另一个变量。