一天吃九顿饭 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 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog