大家过来看!帮小弟我解决这道题的小BUG.
大家过来看!!帮我解决这道题的小BUG..急在线等
要求是用户输入二个字符串,然后在字符串一中找,看有没有字符串二,有的话就输出 "出现过在哪个地位置 "没有就输出没有.
#include <stdio.h>
void main()
{
//定义
char ptr1[100],ptr2[20];
int i=0,j=0,k=0,count=0,number;
//输入
printf( "请输入第一个字符串: ");
gets(ptr1);
fflush(stdin);
printf( "请输入第二个字符串: ");
gets(ptr2);
//计算ptr2一共有几个字符
for(i=0;ptr2[i]!= '\0 ';i++)
{
count++;
}
//把ptr2的字符个数赋给number
number=count;
//开始判断
for(;ptr1[k]!= '\0 ';)
{
//判断假如ptr2[j]和ptr1[k]一直相同的话
if(ptr2[j]==ptr1[k])
{
j++;
k++;
count++;
if((ptr2[j]== '\0 ') &&(count==number))
{
printf( "出现过!!第二个字符串在第一个字符串的%d开始出现到%d结束\n ",(k-number+1),k);
break;
}
}
//不同的话
else
{
j=0;
k++;
count=0;
}
}
//当ptr1[k]等于回车的话再判断
if(count!=number)
{
printf( "没有出现过\n ");
}
}
这有个小BUG
别的都可以.就是那些2个连的不行.例:字符串1.tth字符串2.th 这样就找不到.
例:tt tt 这样也找不到..两个连起来的就找不到.不知为什么.别的都行.大家帮我看看.谢
------解决方案--------------------
#include <stdio.h>
void main()
{
//定义
char ptr1[100],ptr2[20];
int i=0,j=0,k=0,count=0,number;
//输入
printf( "请输入第一个字符串: ");
gets(ptr1);
fflush(stdin);
printf( "请输入第二个字符串: ");
gets(ptr2);
//计算ptr2一共有几个字符
for(i=0;ptr2[i]!= '\0 ';i++)
{
count++;
}
//把ptr2的字符个数赋给number
number=count;
//开始判断
for(;ptr1[k]!= '\0 ';)
{
count = 0;
//判断假如ptr2[j]和ptr1[k]一直相同的话
for (j=0; j <number; j++) {
if(ptr1[k+j]!= '\0 ' && ptr2[j]==ptr1[k+j])
{
count++;
if(count==number)
{
printf( "出现过!!第二个字符串在第一个字符串的%d开始出现到%d结束\n ",k+1, (k+number));
break;
}
}
//不同的话
else
{
break;
}
}
k++;
if (count==number) break;
}
//当ptr1[k]等于回车的话再判断
if(count!=number)
{
printf( "没有出现过\n ");
}
}
------解决方案--------------------
char *strstr();
要求是用户输入二个字符串,然后在字符串一中找,看有没有字符串二,有的话就输出 "出现过在哪个地位置 "没有就输出没有.
#include <stdio.h>
void main()
{
//定义
char ptr1[100],ptr2[20];
int i=0,j=0,k=0,count=0,number;
//输入
printf( "请输入第一个字符串: ");
gets(ptr1);
fflush(stdin);
printf( "请输入第二个字符串: ");
gets(ptr2);
//计算ptr2一共有几个字符
for(i=0;ptr2[i]!= '\0 ';i++)
{
count++;
}
//把ptr2的字符个数赋给number
number=count;
//开始判断
for(;ptr1[k]!= '\0 ';)
{
//判断假如ptr2[j]和ptr1[k]一直相同的话
if(ptr2[j]==ptr1[k])
{
j++;
k++;
count++;
if((ptr2[j]== '\0 ') &&(count==number))
{
printf( "出现过!!第二个字符串在第一个字符串的%d开始出现到%d结束\n ",(k-number+1),k);
break;
}
}
//不同的话
else
{
j=0;
k++;
count=0;
}
}
//当ptr1[k]等于回车的话再判断
if(count!=number)
{
printf( "没有出现过\n ");
}
}
这有个小BUG
别的都可以.就是那些2个连的不行.例:字符串1.tth字符串2.th 这样就找不到.
例:tt tt 这样也找不到..两个连起来的就找不到.不知为什么.别的都行.大家帮我看看.谢
------解决方案--------------------
#include <stdio.h>
void main()
{
//定义
char ptr1[100],ptr2[20];
int i=0,j=0,k=0,count=0,number;
//输入
printf( "请输入第一个字符串: ");
gets(ptr1);
fflush(stdin);
printf( "请输入第二个字符串: ");
gets(ptr2);
//计算ptr2一共有几个字符
for(i=0;ptr2[i]!= '\0 ';i++)
{
count++;
}
//把ptr2的字符个数赋给number
number=count;
//开始判断
for(;ptr1[k]!= '\0 ';)
{
count = 0;
//判断假如ptr2[j]和ptr1[k]一直相同的话
for (j=0; j <number; j++) {
if(ptr1[k+j]!= '\0 ' && ptr2[j]==ptr1[k+j])
{
count++;
if(count==number)
{
printf( "出现过!!第二个字符串在第一个字符串的%d开始出现到%d结束\n ",k+1, (k+number));
break;
}
}
//不同的话
else
{
break;
}
}
k++;
if (count==number) break;
}
//当ptr1[k]等于回车的话再判断
if(count!=number)
{
printf( "没有出现过\n ");
}
}
------解决方案--------------------
char *strstr();