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

C语言中从4元素字符串数组随机选元素报错的问题排查

问题分析与解决

首先,报错error: assignment to expression with array type的核心原因是C语言中数组不能被直接赋值:

  • forecast是二维字符数组,它本质是指向数组的常量指针,无法被重新赋值指向其他内存地址。
  • 你写的forecast = forecast[rand()%4];试图把二维数组里的某一行(一维字符数组)直接赋值给整个二维数组,既不符合语法规则,逻辑上也没必要——你要的是随机选取字符串,不是修改原数组本身。

正确写法

如果只是想获取随机选中的字符串,用一个字符指针存储目标字符串的地址即可:

// 记得在程序开头初始化随机数种子,否则每次运行随机结果固定
srand((unsigned int)time(NULL));

char *selected_str = forecast[rand() % 4];
// 之后可通过selected_str操作该字符串,比如打印
printf("随机选中的天气:%s\n", selected_str);

解释:forecast[rand()%4]会返回对应行的首元素地址,将其赋值给字符指针selected_str,就能直接访问对应的字符串,完全不需要修改原数组forecast。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:25:22