- 论坛徽章:
- 0
|
我先统计汉字的个数,将字符总长度传给iconv函数,但是结果仍与预期的不符合啊,代码如下:- #include <stdio.h>
- #include <unistd.h>
- #include <string.h>
- #include <iconv.h>
- #include <stdlib.h>
- int main()
- {
- char *pin = "hello好word你好";
- char *pout = (char *)malloc(100);
- iconv_t cd;
- size_t inlen,outlen = 100;
- char *p = pin;
- char *p2 = pout;
- int num = 0,num2 = 0;
- size_t len = 0;
- char *p3 = pin;
- while(*p3)
- {
- if((*p3) < 0)
- num++;
- else
- num2++;
- p3++;
- }
- inlen = num/3;
- len = num2 + num;
- printf("共有%d个汉字\n",inlen);
- printf("字符串长度为%d\n",len);
- memset(pout,0,100);
- cd = iconv_open("gb2312","utf-8");
- if(cd ==(iconv_t)-1)
- perror("iconv_open");
- if(iconv(cd,&p,&len,&p2,&outlen) < 0)
- perror("iconv");
- iconv_close(cd);
- printf("%s\n",pin);
- printf("%s\n",pout);
- return 0;
- }
复制代码 输出结果为:
共有3个汉字
字符串长度为18
hello好word你好
hello▒▒word▒▒▒ |
|