这是我的代码:
#include <stdio.h>
#include <string.h>
#include <iconv.h>
int main()
{
char input[BUFSIZ];
char output[BUFSIZ];
size_t insize = BUFSIZ;
size_t outsize = BUFSIZ;
char **inp = (char **)input;
char **outp = (char **)output;
iconv_t cd = iconv_open("gb2312", "utf-8");
memset(input, '\0', sizeof(input));
memset(output, '\0', sizeof(output));
// freopen("input", "r", stdin);
scanf("%s", input);
insize = strlen(input);
iconv(cd, inp, &insize, outp, &outsize);
printf("%s\n", output);
iconv_close(cd);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我收到了这条消息:
a.out: **gconv.c:75:__ gconv:断言** `outbuf!=((void*)0)&&*outbuf!=((void*)0)'失败. *已放弃*
我找不到任何问题,我感到无助〜我不擅长英语
你的第四个论点看起来不对 铸造是一个很好的线索,一些奇怪/混乱的东西正在发生.
你需要传递一个指向指针的指针,你传递一个指向一个字符数组的指针,指向一个指向指针的指针.那不是一回事.
你可能需要:
char output[BUFSIZ], *outp = output;
Run Code Online (Sandbox Code Playgroud)
然后用&outp第四个参数调用它.
| 归档时间: |
|
| 查看次数: |
2903 次 |
| 最近记录: |