gpt4 book ai didi

在 Linux 中使用 iconv 库进行 C 编程

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:58 25 4
gpt4 key购买 nike

这是我的代码:

#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;
}

当我运行它时,我收到了这条消息:

a.out:**gconv.c:75: __gconv: 断言**`outbuf != ((void *)0) && *outbuf != ((void *)0)' 失败。*已放弃*

找不到问题很无奈~我英语不好

最佳答案

你的第四个参数看起来不对。 Actor 阵容是一个很好的线索,表明正在发生一些奇怪/令人困惑的事情。

您需要向它传递一个指向指针的指针,您正在向它传递一个指向字符数组的指针转换为指向指针的指针。这不是一回事。

您可能需要:

char output[BUFSIZ], *outp = output;

然后用&outp作为第四个参数调用它。

关于在 Linux 中使用 iconv 库进行 C 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9396146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com