- 论坛徽章:
- 0
|
我在转换汉字时候,怎么不能转换呢?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iconv.h>
int main(int argc, char *argv[])
{
iconv_t cd = iconv_open("GBK", "UTF-8");
if (cd == (iconv_t)-1)
{
fprintf(stderr, "init fail!");
return 0;
}
char *input = "中国";
size_t out = 12;
char *output = (char *)malloc(out);
size_t len = strlen(input);
size_t olen = sizeof(output);
size_t err = iconv(cd, &input, &len, &output, &olen);
if (err == -1)
{
fprintf(stderr, "iconv fail!");
return 0;
}
printf("%s\n", output);
return 0;
}
|
而写成这样就可以:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iconv.h>
int main(int argc, char *argv[])
{
iconv_t cd = iconv_open("GBK", "UTF-8");
if (cd == (iconv_t)-1)
{
fprintf(stderr, "init fail!");
return 0;
}
char *input = "中国";
size_t len = strlen(input);
char output[12];
char *p = (char *)output;
size_t olen = sizeof(p);
size_t err = iconv(cd, &input, &len, &p, &olen);
if (err == -1)
{
fprintf(stderr, "iconv fail!");
return 0;
}
printf("%s\n", output);
return 0;
}
|
为什么下面的可以呢? |
|