fprintf()不能向文件中寫入中文字符


fprintf()不能向文件中寫入中文字符

C語言文件 fprintf函數與printf函數的作用相仿,都是格式化讀寫函數。

所不同的是,fprintf函數的讀寫對象是磁盤文件,即是文件輸出命令。而printf函數的讀寫對象是終端。

fprintf是ANSI的, UNICODE的要用fwprintf;也可以用_ftprintf來同時兼容ANSI和UNICODE;

_wsetlocale(0, L"chs"); //必須加上,否則fwprintf對中文不支持
FILE *f = fopen("c:\\a.txt", "a+");
fwprintf(f, L"%s\n", L"這個可以寫了");
fwprintf(f, L"%s\n", L"1234567890");
fclose(f);

fprintf與fwrite

fprintf(fp, "%d", buffer); 是將格式化的數據寫入文件
fprintf(文件指針,格式字符串,輸出表列);

fwrite(&buffer, sizeof(int), 1, fp);是以二進位方式寫入文件
fwrite(數據,數據類型大小(字節數),寫入數據的最大數量,文件指針);

由於fprintf寫入時,對於整數來說,一位占一個字節,比如1,占1個字節;10,占2個字節;100,占3個字節,10000,占5個字節
所以文件的大小會隨數據的大小而改變,對大數據空間占用很大。
而fwrite是按二進制寫入,所以寫入數據所占空間是根據數據類型來確定,比如int的大小為4個字節(一般32位下),那么整數10所占空間為4個字節,100、10000所占空間也是4個字節。所以二進制寫入比格式化寫入更省空間。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM