微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将字符串分配给定义为char name [20]的联合成员时,将不会编译

如何解决将字符串分配给定义为char name [20]的联合成员时,将不会编译

我正在处理视频C编程教程中的示例,它将无法编译。我收到一条错误消息错误错误:分配给具有数组类型的表达式
unionVar.name =“比尔可以编码”;
^
我曾尝试在不同的地方使用&*,但显然我错过了一些非常简单的东西。

 #include <stdio.h>

union myFirstUnion {
    int i;
    float f;
    char name[20];
} unionVar;   

int main() {
    unionVar.i = 10;
    printf("%d ",unionVar.i);
    printf("\n");
    unionVar.name = "Bill can code";
    printf("%s ",unionVar.name);
    printf("\n");
    unionVar.f = 10.0;
    printf("%f ",unionVar.f);
    printf("\n");
    return 0;
}

我尝试制作一个'char * name {20];'声明,但是在尝试分配字符串时收到不同的错误消息。我的互联网搜索没有产生任何见解。如果可以的话请帮忙。非常感谢。

解决方法

您不能在C中分配数组。

您可以strncpy对其进行写入,例如:

strncpy(unionVar.name,"Bill can code",sizeof(unionVar.name) - 1);
unionVar.name[sizeof(unionVar.name) - 1] = '\0';

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。