㧡悈 2023-02-20 13:26 采纳率: 25%
浏览 31

运行成功,却显示错误。

程序正常运行本地显示触发一个断点,线上显示出错。
已知字符串str,str表示邮箱的不标准格式。 其中”.”会被记录成”dot”,”@”记录成”at”。 写一个程序将str转化成可用的邮箱格式。(可用格式中字符串中除了开头结尾所有”dot”,都会被转换,”at”只会被转化一次,开头结尾的不转化)
输入字符串str.(1<=strlen(str)<=1000)

#include <stdio.h>
#include <stdlib.h>
char* solution(char m[]) {
    char* result;

    int i, p;
    int a=1;
    for (i = 1; i <=998; i++)
    {
        if (i > 1)
        {
            if (m[i] == 'd' && m[i + 1] == 'o' && m[i + 2] == 't' && i < 998 && m[i + 3] != ' ')
            {

                m[i] = '.';
                for (p = i + 1; p < 998; p++)
                    m[p] = m[p + 2];
                m[p + 1] = ' ';
                m[p + 2] = ' ';
            }
            if (m[i] == 'a' && m[i + 1] == 't' && a && m[i + 2] != ' ')
            {
                m[i] = '@';
                for (p = i + 1; p < 999; p++)
                    m[p] = m[p + 1];
                m[p + 1] = ' ';
                a--;
            }
        }
    }
    result = &m[0];

    return result;
}


int main() {
    char str[1000];
    scanf("%s", str);

    solution(str);
    return 0;
}

img

img

img

img

两个地方都有问题,想问一下错的原因。

  • 写回答

3条回答 默认 最新

  • 元气少女缘结神 2023-02-20 13:55
    关注

    第8行i=998时,12行开始所有的 i+2=1000,i+3=1003 这不是越界了吗?总共size才1000

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 2月20日

悬赏问题

  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真
  • ¥15 关于#c语言#的问题,请各位专家解答!
  • ¥15 这个如何解决详细步骤