程序正常运行本地显示触发一个断点,线上显示出错。
已知字符串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;
}
两个地方都有问题,想问一下错的原因。