不知道哪里有逻辑错误,其中s是原始字符串abcabc,s1是要搜索的部分abc
int fun(char *s,char *s1)
{
int n=0;
char *p=NULL;
while(*s)
{
p=s1;
for(;(*p)&&(*p==*s);s++,p++)
{
if(*p==0)
n++;
}
}
return n;
}
求解决谢谢,给其他算法也行。我觉得我的也差不多了只是有一点错误
int fun(char *s,char *s1)
{
int a=0;
char *p=NULL;
p=s1;
while(*s)
{
p=s1;
for(;(*p)&&(*p==*s);s++,p++);//确认相同
if(*p==0)
{
a++;
}
}
return a;
}
这个有时正确有时错误
1.å¯éè¿ strstr å½æ°ï¼æ¥æ¾åå符串ãæ¾å°åå³é空ï¼ç¶åå ä¸åå符串å移ï¼åè¿è¡æ¥æ¾æ²¡ï¼ç´å°æåè¿å为空ã
2.char *strstr( const char *str1, const char *str2 );
åè½ï¼å½æ°è¿åä¸ä¸ªæéï¼å®æåå符串str2
é¦æ¬¡åºç°äºå符串str1ä¸çä½ç½®ï¼å¦æ没ææ¾å°ï¼è¿åNULLã
为什么要加,不加也行。加了也错
追答#include<stdio.h>还是不行啊,有新的算法吗
追答无语。。。思想就是这样,我都测试了全是对的,
你说说看,那里不行?
#include
int fun(char *s,char *s1)
{
int n=0;
char *p=NULL;
while(*s)
{
p=s1;
for(;*p&&(*p==*s);s++,p++);
if(*p=='\0')
{n++;s--;} //这里少了一个s--
if(*s!=*p)
++s;
}
return n;
}
void main()
{
char s[]="abcabc",s1[]="abc";
printf("%d ",fun(s,s1));
}
aaaaaaaaaa a
追答