g_strduping 一个 char 数组成员元素

发布于 2024-08-18 12:57:48 字数 502 浏览 6 评论 0原文

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 数组。

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

The last line doesn't compile. I also tried &(inst->name) with no luck.
The error I get is:

Error: char is not a structure type.

I understand that char[] and char * are different types altogether. But shouldn't g_strdup be able to take a starting position of a C string and dupe it? If I do the following it works:

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

How can I achieve what I am trying to do without making a local char array copy? I think I am not passing the argument correctly in the fist scenario as in both cases g_strdup is being passed a char array.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

忱杏 2024-08-25 12:57:48

我不认为你的问题出在你认为的地方。 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;
}

I don't think your problem lies where you think it does. gchar and char are for all intents and purposes the same. For example, this code works fine for me:

#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;
}
月寒剑心 2024-08-25 12:57:48

在结构体中使用 gchar 代替 char。

use gchar instead of char in struct.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文