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

C语言‘Excess elements in scalar initializer’错误解析与解决示例

解决“Excess elements in scalar initializer”错误及二维数组动态赋值方案

错误原因

你的代码存在两个关键问题:

  1. 数组访问错误:box[15][2]是在访问二维数组的单个int元素,且已越界——C语言数组下标从0开始,box是15行2列的数组,合法下标范围是box[0][0]到box[14][1]。单个int属于标量类型,不能用{{...}}这种数组初始化列表赋值,这就是编译器报错的核心原因。
  2. 字符串比较错误:用hand == "right"比较字符串无效,C语言中字符串本质是指针,==只会比较指针地址,不会对比字符串内容,必须用strcmp函数。

正确实现示例

#include <string.h>

// 初始化二维数组为全0
int box[15][2] = {{0}};
// 预先定义右手模式的目标数据
int right_box[15][2] = {
    {45,85}, {45,75}, {45,65},
    {65,85}, {65,75}, {65,65},
    {25,85}, {25,75}, {25,65},
    {5,85}, {5,75}, {5,65},
    {85,85}, {85,75}, {85,65}
};

// 用strcmp比较字符串内容
if (strcmp(hand, "right") == 0) {
    // 用memcpy批量复制数组内容到box
    memcpy(box, right_box, sizeof(box));
}

补充说明

  • memcpy可高效批量复制数组内容,需包含头文件<string.h>
  • 若不想预先定义临时数组,也可通过循环逐个元素赋值,但memcpy效率更高

内容的提问来源于stack exchange,提问作者Q With Only

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:42:47