C语言编程:从键盘输入一个字符串,查找指定子串第一次出现的位置。求问题补充里的程序

例:输入abcccde,指定子串为cd,则输出为5... 例:输入abcccde,指定子串为cd,则输出为5 展开
 我来答
好名字都被取了
2019-12-19 · TA获得超过423个赞
知道答主
回答量:101
采纳率:90%
帮助的人:6.1万
展开全部

原理类似于找素数,以下是具体代码(附注释):

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int SearchString(char s[], char d[]);

main()
{
char s[81];  //储存一串字符
char d[10];  //储存要查找的字符
int flag;
//输入一串字符
printf("Input a string:");
gets(s);
//输入想要查找的字符
printf("Input another string:");
gets(d);
//调用函数,输出结果
flag=SearchString(s,d);
if(flag==-1)
printf("Not found!\n");
else
printf("Searching results:%d\n",flag);

system("pause");
}

//函数功能:在字符数组s中查找子串d,返回d在s中首次出现的位置,若找不到,则返回-1
int SearchString(char s[], char d[])
{
int location=-1;
int i,j;
//第一层循环遍历被查找字符串
for(i=0;s[i]!='\0';i++)
{
//第二层循环遍历要查找的字符,若有不同的字符则退出该循环
for(j=0;d[j]!='\0';j++)
{
if(s[i+j]!=d[j])
break;
}
//判断第二层循环是否全部执行,若全部执行则表示字符相等,保存位置
if(d[j]=='\0')
{
location=i+1;
break;
}
}
return location;
}
常乐常知足
2012-04-06 · TA获得超过1152个赞
知道小有建树答主
回答量:702
采纳率:66%
帮助的人:190万
展开全部
#include <stdio.h>
int main()
{
int i,j;
char s1[100],s2[100];
scanf("%s%s",s1,s2);
for(i=0;i<100;i++)
{
if(s1[i]=='\0' ) break;
for(j=0;j<100;j++)
if(s2[j]=='\0' || s2[j]!=s1[j+i]) break;
if(s2[j]=='\0' ) {printf("位置是:%d",i+1); break;}
}
if(s1[i]=='\0' ) printf("没找到");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
weng_weijie
2017-08-17 · TA获得超过209个赞
知道答主
回答量:29
采纳率:66%
帮助的人:8.1万
展开全部
#include<stdio.h>
#include<string.h>
char buf[1024],search[128];
int main(){
printf("Read String:");scanf("%s",buf);
printf("Read Substr:");scanf("%s",search);
char * pos = strstr(buf,search);
if (pos==NULL)
printf("Can't found \"%s\"\n",search);
else  
printf("%d\n",pos-buf+1);
return 0;
}

利用string.h库函数strstr()查找子串

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式