C语言中箭头指针赋值字符报错问题求助
问题分析与解决
你的代码中stream->venue = room1;触发“类型不兼容”错误的核心原因是:C语言里数组名是指向首元素的常量指针,无法通过赋值运算符直接将一个数组赋值给另一个数组。
正确实现方案
要完成字符串复制,需要使用标准库的strcpy函数,具体步骤如下:
- 引入字符串操作头文件
<string.h>,strcpy函数定义在此文件中 - 替换错误的赋值语句为字符串复制代码
- 务必保证
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
相关产品推荐
相关产品推荐

