c - 连接两个字符串时 g_strjoin 崩溃

标签 c glib

我正在使用 glib-2.0 连接两个简单的字符串。这是我的代码:

int main() {

    gchar *a = "12";
    gchar *b = "1231212";

    printf("a: %s\n", a);
    printf("b: %s\n", b);
    gchar *c = g_strjoin(",", a, b);
    printf("c: %s\n", c);

    return EXIT_SUCCESS;
}

它在 g_strjoin(",", a, b) 处崩溃。核心文件没有显示太多信息:

Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `./server'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  strlen () at ../sysdeps/x86_64/strlen.S:137
137     FIND_ZERO

我做错了什么吗?我在 Fedora 20 上使用 glib2-2.38.2-2.fc20.x86_64

最佳答案

因为 g_strjoin() 可以连接任意数量的字符串,列表必须以 NULL 结束:

 gchar *c = g_strjoin(",", a, b, NULL );

关于c - 连接两个字符串时 g_strjoin 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25744275/

相关文章:

c - 在 C 中复制字符串时遇到问题?

C 奇怪的错误与 strcpy 甚至更奇怪的解决方案

c - 没有引用 glib 函数

sockets - 使用 glib 进行 SSL 套接字编程

c - glib:valgrind 在 g_strsplit 之后报告 'still reachable' block

c - 使用 glib 从配置文本中读取值

c - 初学者类型转换

c - 如何使用 TDM64-GCC 工具链执行标准 GCC "configure"脚本?

c - 未在服务器端客户端-服务器 TCP 上接收单独的值

gtk - GLib编译错误(ffi.h),但libffi已安装