数据的 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;
}

如果我保存字符串然后重新加载它,“字符串不同”。

我确定这很简单,但我已经尝试了我能想到的一切。

我看到这里有两个错误。

  1. fopen("test.txt", "w"); 应该是 ..., "wb"..., "rb" 对于将与 fread()fwrite()。我怀疑你的平台是 Windows 并且由于这个错误它正在破坏你的密文。

  2. (strcmp(saveMe, loadMe)) ? same : differentstrcmp returns 0 相同。

不知道你有没有这个,因为减价了;但是由于嵌入空值的趋势,你不能在密文上使用 strcmp() ;你必须自己跟踪另一个变量。