我有一些代碼,像這樣寫一個char *
二進制文件:字符串寫入到二進制文件用C
FILE *fp = fopen(path, "wb");
if (fp == NULL) {
printf("Failed to open file at path: %s. %s\n", path, __PRETTY_FUNCTION__);
return;
}
fwrite("Hello", 6, 1, fp);
的問題是,當我再從該文件中像這樣寫着:
FILE *fp = fopen(path, "rb");
if (fp == NULL) {
printf("Failed to open file at path: %s. %s\n", path, __PRETTY_FUNCTION__);
return;
}
char *str;
fread(str, 6, 1, fp);
printf("Got str: %s\n", str);
我得到不同的結果,例如Oello
或Mello
。到底是怎麼回事?
你從來沒有設置'char * str'或者我錯了嗎? –
發佈**全部**您的代碼。你發佈的代碼已經讀入'id':'fread(id,6,1,fp);'(* maybe * reading - 你不檢查返回值...),但是你發出任何內容未初始化的變量'str'指向:'printf(「Got str:%s \ n」,str);' –
對不起,這是一個錯字。我正在閱讀str變量。該ID來自以前的實現,我改變了str,所以我可以測試出了什麼問題。 –