- 论坛徽章:
- 0
|
经过测试,发现这样可以正常调用ICONV函数,不会崩溃。而且从函数返回的结果为0来看,函数调用成功了,但转换结果好像不对。
#include <iconv.h>
#include <stdio.h>
#include <locale.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <strings.h>
int main(int argc, char * argv[])
{
int ret;
//char str[10]={0};
char *str = (char*)malloc(10); // 在堆上分配,这样调用ICONV函数则不会崩溃? WHY? 难道不能使用栈上的内存??
int src_len;
int dest_len;
char *dest;
iconv_t conv, conv2;
strcpy(str, "test");
src_len = strlen(str)+ 1;
dest_len = src_len * 2;
dest = (char*)malloc(dest_len);
bzero(dest, dest_len);
conv = iconv_open("UCS-2LE", "ASCII");
if (conv == (iconv_t)-1) {
printf("iconv_open: %d\n", errno);
return -1;
}
ret = iconv(conv, (char**)&str, &src_len, &dest, &dest_len);
if (ret == -1) {
printf("iconv: %d\n", errno);
return -1;
}
printf("%s - %S\n", str, dest);
iconv_close(conv);
free(dest);
free(str);
return 0;
}
|
哪位帮忙解释下? ICONV函数到底应该如何使用? 郁闷中.....
[ 本帖最后由 逸远 于 2008-6-28 22:18 编辑 ] |
|