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

C语言结构体char数组成员无法输出问题排查

问题原因分析
  • 你定位的代码行p1.myArray = "HELLO!"确实是错误根源:C语言中数组名是不可修改的左值,不能直接用赋值运算符给数组整体赋值。你这里的写法试图把字符串常量"HELLO!"的首地址直接赋值给数组名myArray,属于明确的语法错误,编译器会直接抛出报错,不会生成可执行文件。
修复方案

你可以用以下两种常用合法方案给结构体的char数组成员赋值:

  1. 运行时赋值使用string.h头文件的strcpy函数拷贝字符串
    修改后可运行的完整代码如下:
#include <stdio.h>
// 引入string.h头文件提供strcpy实现
#include <string.h>

struct myStruct
{
    int myInt;    
    float myFloat;
    char myArray[40];
};

int main()
{
    struct myStruct p1;
    
    p1.myInt = 80;
    p1.myFloat = 3.14;
    printf("Integer: %d\n", p1.myInt);
    printf("Float: %f\n", p1.myFloat);
    
    // 把字符串内容拷贝到myArray对应的内存空间中
    strcpy(p1.myArray, "HELLO!");
    printf("Array: %s\n", p1.myArray);

    return 0;
}
  1. 如果是定义结构体变量的同时初始化,可以直接用字符串字面量赋值:
// 初始化语法不属于运行时赋值,符合C标准要求
struct myStruct p1 = {80, 3.14, "HELLO!"};

内容的提问来源于stack exchange,提问作者user16307

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:48:02