程序内容:
读取两个字符串,找出第一个字符串在第二个字符串中出现的位置,输出这些位置,如果找不到,则输出-1,第一个字符的位置是0。并且第一个字符串在第二个字符串中的位置可能不止一处。
程序主调函数代码:
#include<stdio.h>
#include<string.h>
#define SIZE 50
void s_gets(char *s1,int index); //读取字符串,将换行符去掉
void location(char *s1,char *s2); //寻找s1在s2中的位置
int main(void)
{
char mainstring[SIZE];
char str2[SIZE];
s_gets(str2,SIZE);
s_gets(mainstring,SIZE);
location(mainstring,str2);
return 0;
}
void s_gets(char *s1,int index)
{
char * exceptional_case;
exceptional_case=fgets(s1,index,stdin);
while(*s1++)
if(*s1=='n')
*s1='0';
}
void location(char *s1,char *s2)
{
char *p;
int n=0;
int nofound=-1;
while(p=strstr(s1+n,s2))
{
n=p-s1;
printf("%d ",n++);
if(nofound)
nofound=0;
}
if(nofound)
printf("%d",nofound);
}
附:程序代码为本人亲自编写,并非书内标准答案,仅供参考。
如果程序有任何bug或者有好的建议,可以在评论区留言,或者私信,或发送邮箱weizhishuimu@163.com