g_strduping一个char数组成员元素

时间:2010-01-23 19:02:56

标签: c glib struct

typedef struct {
char name[10];
} A;
A * inst = get_instance_of_A();
char *str = g_strdup ( inst->name );

最后一行无法编译。我也尝试过&(inst-> name)没有运气。 我得到的错误是:

错误:char不是结构类型。

我理解char []和char *是完全不同的类型。但是不应该g_strdup能够采取C字符串的起始位置并欺骗它吗?如果我执行以下操作,它将起作用:

char temp[10];
strncpy(temp,inst->name,9);
char *str = g_strdup ( temp );

如何在不制作本地字符串数组的情况下实现我想要做的事情?我认为我没有在第一种情况下正确地传递参数,因为在两种情况下g_strdup都被传递给char数组。

2 个答案:

答案 0 :(得分:1)

我不认为你的问题出在你认为的地方。 gcharchar用于所有意图和目的。例如,这段代码对我来说很好:

#include <glib.h>

typedef struct {
    char name[10];
} A;

A global_A = { "name here" };

A *
get_instance_of_A(void)
{
    return &global_A;
}

int
main(int argc, char **argv)
{
    const A *inst = get_instance_of_A();
    char *str = g_strdup(inst->name);
    g_print("%s\n", str);
    return 0;
}

答案 1 :(得分:-2)

在struct中使用gchar而不是char。

相关问题