【发布时间】:2021-03-28 17:22:46
【问题描述】:
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;
}
如果我保存字符串然后重新加载它,“字符串不同”。
我确信这很简单,但我已经尝试了我能想到的一切。
【问题讨论】:
-
我们不使用 C 中的
==运算符比较字符串,而是使用strcmp。此外,您没有空间容纳尾随的 NUL,您需要malloc(len + 1);和fwriite(..., ..., len + 1, ... -
谢谢大卫。即使有这些变化,也没有骰子。
-
好吧,现在您需要
!strcmp或(strcmp(...) == 0),请记住,如果两个字符串相等,strcmp将返回 0。 -
就是这样。谢谢你。现在回到弄清楚为什么当我加密/解密东西时它不起作用。
-
loadMe 不是 NULL 终止的。尝试使用 calloc()
标签: arrays c char fwrite fread