c语言中如何在给定的一个字符串中判断是否有另外一个输入的字符串?有什么简单方法吗?
有一道题目,要求输入两行字符串,要求输出在第二个字符串中第一个字符串出现的位数。下面是我的代码。#include<stdio.h>#include<string.h>in...
有一道题目,要求输入两行字符串,要求输出在第二个字符串中第一个字符串出现的位数。下面是我的代码。
#include<stdio.h>
#include<string.h>
int main()
{
char sen[4500],str[120],str1[120];
int i,n,n1,s,f=0,j;
gets(str);
gets(sen);
n=strlen(sen);
n1=strlen(str);
for(i=0;i<n;i++)
{
if(sen[i]==str[0])
{
for(j=0;j<n1;j++,i++)
str1[j]=sen[i];
if(strcmp(str,str1)==0)
{
printf("%d\n",i-n1+1);
f=1;
}
else i=i-n1+2;printf("%d\n",i);
}
if(f==1) break;
}
for(i=0;i<n1;i++)
printf("%c",str1[i]);
printf("\n%d\n",strcmp(str,str1));
return 0;
}
这样做好像很复杂,哪位大侠能简化,或者有更简单的方法? 展开
#include<stdio.h>
#include<string.h>
int main()
{
char sen[4500],str[120],str1[120];
int i,n,n1,s,f=0,j;
gets(str);
gets(sen);
n=strlen(sen);
n1=strlen(str);
for(i=0;i<n;i++)
{
if(sen[i]==str[0])
{
for(j=0;j<n1;j++,i++)
str1[j]=sen[i];
if(strcmp(str,str1)==0)
{
printf("%d\n",i-n1+1);
f=1;
}
else i=i-n1+2;printf("%d\n",i);
}
if(f==1) break;
}
for(i=0;i<n1;i++)
printf("%c",str1[i]);
printf("\n%d\n",strcmp(str,str1));
return 0;
}
这样做好像很复杂,哪位大侠能简化,或者有更简单的方法? 展开
2个回答
展开全部
char arr1[];
char arr2[]; //你的俩字符串
int main()
{
unsigned Arr1Len = strlen(arr1); //字符串1的长度
unsigned i = 0,j = 0,count = 0;
for(i;i<Arr1Len;i++) //根据1的长度决定循环次数
{
/*循环对比,找到就推出循环并且计数加一*/
while(arr2[j++]!='\0')
{
if(arr1[i]==arr2[j])
{
count++;
j=0;
break;
}
}
}
printf("出现次数为%d\n",count);
}
大体的思路,没编译过
char arr2[]; //你的俩字符串
int main()
{
unsigned Arr1Len = strlen(arr1); //字符串1的长度
unsigned i = 0,j = 0,count = 0;
for(i;i<Arr1Len;i++) //根据1的长度决定循环次数
{
/*循环对比,找到就推出循环并且计数加一*/
while(arr2[j++]!='\0')
{
if(arr1[i]==arr2[j])
{
count++;
j=0;
break;
}
}
}
printf("出现次数为%d\n",count);
}
大体的思路,没编译过
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询