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

C语言中箭头指针赋值字符报错问题求助

问题分析与解决

你的代码中stream->venue = room1;触发“类型不兼容”错误的核心原因是:C语言里数组名是指向首元素的常量指针,无法通过赋值运算符直接将一个数组赋值给另一个数组。

正确实现方案

要完成字符串复制,需要使用标准库的strcpy函数,具体步骤如下:

  1. 引入字符串操作头文件<string.h>,strcpy函数定义在此文件中
  2. 替换错误的赋值语句为字符串复制代码
  3. 务必保证stream指针已指向有效的struct room实例(避免空指针访问导致崩溃)

修改后的完整代码示例:

#include <string.h>

struct room
{
    char venue[15];
} *stream;

// 示例:初始化stream指向有效的结构体实例
// #include <stdlib.h>
// stream = malloc(sizeof(struct room));

void idealounge(){
    int i, idealounge[10];
    char room1[10] = "MMLC";

    // 正确复制字符串到venue数组
    strcpy(stream->venue, room1);
}

额外优化建议

  • 可以直接使用字符串字面量复制,省去临时数组room1:
    strcpy(stream->venue, "MMLC");
    
  • 如果是初始化结构体实例,也可以直接赋值:
    struct room my_room = {"MMLC"};
    stream = &my_room;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:35:49