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個字節。所以二進制寫入比格式化寫入更省空間。
