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

C语言判断回文字符串报Array must be initialized with a brace enclosed initializer错误

问题分析

直接报错原因

你遇到的编译错误核心原因是:C语言语法规定,字符数组初始化时仅支持大括号包裹的初始化列表,strrev()函数的返回值是char*类型的指针,不能直接用来给数组b做初始化赋值,因此编译器抛出"Array must be initialized with a brace enclosed initializer"错误。

代码其他逻辑/语法问题

  • scanf("%s",&a[100]);写法错误:&a[100]指向数组a最后一个元素的下一块非法内存,输入内容会直接越界写入,正确写法是传入数组首地址scanf("%s", a);
  • strrev()是原地反转函数:调用strrev(a)会直接修改原数组a的内容,就算你后续能正确赋值给b,也得不到原始字符串和反转字符串的对比结果
  • 判断逻辑完全错误:
    1. if(a[100]=b[100])里的=是赋值运算符,不是相等判断的==
    2. a[100]、b[100]都是数组越界访问,长度为100的数组合法下标范围是0~99
    3. 要判断两个字符串是否相等,需要用strcmp()函数逐字符对比,不能直接对比单个下标元素
修正后代码
#include<stdio.h>
#include<string.h>

int main()
{
    char a[100], b[100];
    // 正确读取输入字符串
    scanf("%s", a);
    // 先把原始字符串拷贝到b中
    strcpy(b, a);
    // 反转b,此时a是原始字符串,b是反转后的字符串
    strrev(b);
    // 用strcmp对比两个字符串,返回0说明完全相等
    if(strcmp(a, b) == 0)
    {
        printf("It is a palindrome");
    }
    else
    {
        printf("It is not a palindrome");
    }
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:54:09