在C语言中,写一个将GB2312编码的字符串转换为中文汉字的函数和测试代码
时间: 2023-04-05 11:01:11 浏览: 294
可以使用iconv库中的函数进行转换,具体步骤如下:
1. 引入头文件#include <iconv.h>
2. 定义函数,函数原型如下:
int gb2312_to_utf8(char *inbuf, size_t inlen, char *outbuf, size_t outlen);
其中,inbuf为输入的GB2312编码字符串,inlen为字符串长度;outbuf为输出的UTF-8编码字符串,outlen为输出字符串长度。
3. 在函数中调用iconv函数进行转换,代码如下:
int gb2312_to_utf8(char *inbuf, size_t inlen, char *outbuf, size_t outlen)
{
iconv_t cd;
char **pin = &inbuf;
char **pout = &outbuf;
cd = iconv_open("UTF-8", "GB2312");
if (cd == (iconv_t)-1)
return -1;
memset(outbuf, 0, outlen);
if (iconv(cd, pin, &inlen, pout, &outlen) == -1)
return -1;
iconv_close(cd);
return 0;
}
4. 编写测试代码,代码如下:
int main()
{
char gb2312_str[] = "中文字符串";
char utf8_str[1024];
gb2312_to_utf8(gb2312_str, strlen(gb2312_str), utf8_str, sizeof(utf8_str));
printf("GB2312编码字符串:%s\n", gb2312_str);
printf("UTF-8编码字符串:%s\n", utf8_str);
return 0;
}
注意:在使用iconv函数进行转换时,需要注意输入和输出字符串的长度,以避免内存溢出等问题。
阅读全文