我正在嘗試使用fseek轉到文件中的特定位置並打印文本。但是,當我使用fputc或fwrite時,他們保持輸入十六進制值而不是char值。該文件是一個.dat文件,並最初填充0。所以除了這個,如果我嘗試寫入文件的其餘部分被刪除....我需要它保持不變,但用這個新文本覆蓋特定的位置。除此之外,爲什麼我的fseek每次只移動2個字節而不是1個?代碼:爲什麼我的fputc/fwrite繼續以十六進制打印,如何打印到文件的中間?
FILE * pF;
pF = fopen("/home/caleb/Documents/PA3/dssoo_p3_material_v2/disk.dat" , "wb");
fseek (pF, 4, SEEK_SET);
char c='c';
fputc(c, pF);
//char buffer[] = { 'x' , 'y' , 'z' };
//fwrite (buffer , sizeof(char), sizeof(buffer), pF);
fclose (pF);
注意到fwrite在這裏被註釋掉了。我在fopen中也嘗試了除wb以外的其他值。 我得到:0000 0000 63
是否需要在Hex中,因爲它是一個.dat文件?這裏的每個0代表一個字節是否正確?如果char佔用一個字節,它不應該佔用一個點(假設Hex不是必需的)?
編輯:我意識到,如果我貓打印出來的字符。但是這是否意味着每兩個空格都被認爲是一個字節?