C语言将汉字保存到文件中
预备知识
fwrite函数是C语言中用于将数据块写入文件的函数。其函数原型为:
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
ptr是指向要写入的数据块的指针
size是每个数据块的大小(以字节为单位)
count是要写入的数据块的数量
stream是指向要写入的文件的指针
fwrite函数返回成功写入的数据块数量,如果出现错误则返回0。
该函数会将数据块按照指定的大小和数量写入文件中
如果写入的数据块大小和数量不足,则会在文件末尾添加空字节。
示例代码:
#include <stdio.h>
int main() {
FILE *fp;
char str[] = "Hello, world!";
fp = fopen("test.txt", "w");
fwrite(str, sizeof(char), sizeof(str), fp);
fclose(fp);
return 0;
}
该代码将字符串"Hello, world!"写入文件test.txt中
在C语言中,汉字字符串可以通过以下两种方式存储到文件中:
1. 使用ANSI编码的字符串
ANSI编码是一种单字节编码,可以将汉字转换成对应的字符。在使用ANSI编码的字符串时,需要注意文件的编码格式应该与字符串编码格式一致,否则会出现乱码。
下面是一个将汉字字符串存储到文件中的示例代码:
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "你好,世界!";
FILE *fp = fopen("test.txt", "w");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
fwrite(str, sizeof(char), strlen(str), fp);
fclose(fp);
return 0;
}
2. 使用Unicode编码的字符串
Unicode编码是一种多字节编码,可以将汉字转换成对应的Unicode码。在使用Unicode编码的字符串时,需要注意文件的编码格式应该为UTF-16LE或UTF-8,否则会出现乱码。
下面是一个将汉字字符串以UTF-16LE编码存储到文件中的示例代码:
#include <stdio.h>
#include <wchar.h>
int main() {
wchar_t str[] = L"你好,世界!";
FILE *fp = _wfopen(L"test.txt", L"w, ccs=UTF-16LE");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
fwrite(str, sizeof(wchar_t), wcslen(str), fp);
fclose(fp);
return 0;
}