g_strduping 一个 char 数组成员元素
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不认为你的问题出在你认为的地方。
gchar
和char
的所有意图和目的都是相同的。例如,这段代码对我来说效果很好:I don't think your problem lies where you think it does.
gchar
andchar
are for all intents and purposes the same. For example, this code works fine for me:在结构体中使用 gchar 代替 char。
use
gchar
instead of char in struct.