ysysr2002 2021-02-28 21:55 采纳率: 0%
浏览 45
已结题

一道课后习题,报错显示数组越界,想请大佬看看问题具体出在哪?

//可见字符的ASCII码范围是32~126
#include <stdio.h>
#include <string.h>

int main()
{
    char str1[512], str2[512];//str1是输入的字符串,str2用于存放不同种类的字符
    char ch;//ch是出现次数最多的那个字符
    int count = 0, type = 0, max = 0;//count是单个字符出现的次数,type是不同字符的种类数,max是出现次数最多的那个字符的数量
    int i, a, n = 0;//其他

    printf("请输入英语文本:");
    scanf("%[^\n]", &str1);

    for (i = 32; i <= 126; i++)//按照ASCII码表逐个判断
    {
        for (a = 0; a < strlen(str1); a++)
        {
            if (str1[a] == (char)i)
            {
                count++;
            }
        }
        if (count != 0)
        {
            type++;
            str2[n] = (char)i;
            n++;
            if (count >= max)
            {
                max = count;
                ch = (char)i;
            }
        }
        count = 0;
    }
    str2[strlen(str2)] = '\0';

    printf("你总共输入了%u个字符,其中不同的字符个数有%d个\n", strlen(str1), type);
    printf("它们是:%s\n", str2);
    printf("出现次数最多的字符是'%c',它总共出现了%d次\n", ch, max);

    return 0;
}
  • 写回答

2条回答 默认 最新

  • 爱晚乏客游 2021-03-01 09:34
    关注

    你定义了512长度,但是你打印下strlen,长度确实超过了512.

     

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月11日

悬赏问题

  • ¥15 机器学习教材中的例题询问
  • ¥15 求.net core 几款免费的pdf编辑器
  • ¥15 C# P/Invoke的效率问题
  • ¥20 thinkphp适配人大金仓问题
  • ¥20 Oracle替换.dbf文件后无法连接,如何解决?(相关搜索:数据库|死循环)
  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)