这是我写的判断主字符串是否包含子字符串的C程序。

来源:百度知道 编辑:UC知道 时间:2024/05/09 14:17:31
C语言判断子字符串是不是包含在主字符串中,如果是就输出第一个相同字符的位置。那个用一个一个字符判断的方法的算法我已经懂了。我想试试用字符串的方法。但是结果有错。好像字符串函数参数用指针那里出错,但是不知道怎么改。请朋友们不吝赐教!

#include <stdio.h>
#include <string.h>
void main()
{
char str1[40],str2[30];
int len1,len2,flag=0,i=0;
char *p1=str1,*p2=str2,*temp;
printf("请输入主字符串:\n");
gets(str1);
len1=strlen(str1);
printf("请输入子字符串:\n");
gets(str2);
len2=strlen(str2);
for (;i<=len1-len2;i++)
{
strcpy(temp,p1+i,len2);//通过指针取主字符串前len2个字符。
if (strcmp(temp,p2)==0)//用取的字符串的指针与子字符串的指针比较,看是否一样。
{
printf("包含,在第%d个位置。\n",i+1);
flag=1;
break;
}
}
if (flag==0)
printf("不包含。\n");
}

strcpy(temp,p1+i,len2);//通过指针取主字符串前len2个字符。
这句有问题咯
1,使用strncpy
2,temp是指针,没分配空间,
改成数组好了 char temp[30];
3,对temp[]进行初始化
char temp[30]={0};
或者
memset(temp,0,sizeof(temp));