You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言结构体char数组成员初始化报错红下划线问题求解

问题原因

你的结构体中nom和prenom被定义为固定长度的字符数组:char nom[100]、char prenom[100]。在C语言语法中,数组名是不可修改的左值,不能直接通过=运算符给数组整体赋值。你写的joueur->nom = ""本质是尝试把字符串常量""的首地址赋值给数组名nom,属于语法错误,因此编辑器会对对应位置标红。

解决方案

有以下几种常见的修复方式,操作前需要先在main.c中引入<string.h>头文件:

  • 方案1:使用strcpy函数拷贝空字符串到字符数组
    void initialiserJoueur(Personne *joueur){
        joueur->age = 0;
        strcpy(joueur->nom, "");
        strcpy(joueur->prenom, "");
    }
    
    如果需要规避字符串越界风险,可以选择更安全的strncpy写法:
    void initialiserJoueur(Personne *joueur){
        joueur->age = 0;
        strncpy(joueur->nom, "", sizeof(joueur->nom) - 1);
        joueur->nom[sizeof(joueur->nom) - 1] = '\0'; // 手动补充字符串终止符
        strncpy(joueur->prenom, "", sizeof(joueur->prenom) - 1);
        joueur->prenom[sizeof(joueur->prenom) - 1] = '\0';
    }
    
  • 方案2:使用memset把字符数组整体初始化为0
    把数组所有位置置为0后,天然就是合法的空字符串:
    void initialiserJoueur(Personne *joueur){
        joueur->age = 0;
        memset(joueur->nom, 0, sizeof(joueur->nom));
        memset(joueur->prenom, 0, sizeof(joueur->prenom));
    }
    

内容的提问来源于stack exchange,提问作者B. Christophe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:54:06