一天吃九顿饭 2018-11-23 13:44 采纳率: 0%
浏览 1655

求助大佬为什么我的代码运行时测试器会输出运行时错误(SIGABRT)?

编制具有如下原型的函数findLast:

       char*findLast(char*sourceStr,char*subStr);

findLast函数则要返回源串sourceStr中最后一次出现subStr子字符串的头字符位置。

而后编制主函数,输入两个字符串,将它们用作实参来调用这两个函数,如果返回NULL输出-1,否则输出子字符串出现时头字符在原字符串的下标,每个结果占一行。

要求实现程序中不可使用“string.h”头文件内有关寻找子串的标准库函数。

【输入形式】输入源串sourceStr,子字符串subStr。

【输出形式】子字符串subStr最后一次在源串sourceStr中出现的位置

【样例输入】

    welcometochinauniversityofminingandtechnology

    in

【样例输出】29

下面是我的代码
#include
using namespace std;
char*findfirst(char*sourceStr,char*subStr);;
int main()
{
char str[30],substr[20];
char p;
p=str;
cin>>str>>substr;
p=findfirst(str,substr);
if(p!=NULL)
{
cout<<p-str+1<<endl;
}
else
{
cout<<-1;
}
return 0;
}
char*findfirst(char *sourceStr,char*subStr)
{
char*p3;
char a[30]={'\0'};
p3=a;
char*p1=sourceStr,*p2=subStr;
int len1=0,len2=0;
while(*p1!='\0')
{
len1++;
p1++;
}
while(*p2!='\0')
{
len2++;
p2++;
}
p1=sourceStr;
p2=subStr;
if(len1<len2)return NULL;
else
{
while(*p1!='\0')
{
if((*p1==*p2)&&(
(p2+1)=='\0'))
{
p3=p1;
}
if(*p1==*p2)
{
p1++;
p2++;
}
else
{
if(p2!=subStr)p2=subStr;
else p1++;
}
}
if((*p1=='\0')&&(*p3!='\0'))return p3-len2;
if(*p3=='\0') return NULL;
}
}

  • 写回答

1条回答 默认 最新

  • 许以青 2018-11-24 00:36
    关注

    估计源文件引用的不完善或定义类的文件不完善

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器