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个字节。所以二进制写入比格式化写入更省空间。

posted @ 2020-07-10 20:54  friedCoder  阅读(2035)  评论(0编辑  收藏  举报