读书人

一个很初学者的有关问题只写了一点就

发布时间: 2012-03-02 14:40:28 作者: rapoo

一个很菜鸟的问题,只写了一点就不知道用程序怎么样实现了,希望大家指教
我想通过程序实现,输入两个字符串,判断第一个字符串中是否包含第二个字符串,如果包含,指出第二个字符吕在第一个字符串中的位置。下面是我写的一点点

我的简单的程序思路是,通过主函数输入两个字符串,然后通过子函数形参来实现功能。
INT i,j分别代表第一个字符串和第二个字符串的位置。

#include "stdio.h "
#include "string.h "
int name(char * ,char *);

void main()
{
char str1[50],str2[50];
printf( "分别输入两行字符串\n ");
printf( "请输入第一行字符串: ");
gets(str1);
printf( "\n请输入第一行字符串: ");
gets(str2);
}
int name(char *p1 ,char *p2)
{

int i=0,j=0;
if(*p1[i])
}

[解决办法]
这个问题你得这么做了:由于是要看字符串1里是否包含字符串2,所以你可以用strcmp函数,然后通过不断的移动字符串1的指针来实现比如:
*p1是第1个字符串,要看*p2是否在第2个里存在
int get_pos(char *p1,char *p2)
{
int pos=1,i,flag=0;;
char *tmp;
while(*p1!= '\0 ') //*p1就是单个字符,如果为\0说明字符串判断已经结束了,循环也就终止了
{
i=strlen(p2); //首先要获取字符串2的长度
tmp=(char *)malloc(i+1); //在内存中申请字符串p2长度+1个字节
memcpy(tmp,p1,i); //把p1中指定为p2长度的字符串拷贝到tmp中
tmp[i]= '\0 '; //让最后一个字节做为字符串结尾
if(strcmp(tmp,p2)==0) //如果出现同样的字符串
{
flag=1; //flag用于标志是否找到匹配的字符串,为1说明找到了
break(); //停止循环
}
p1++;
pos++;
free(tmp); //释放内存
}
if(flag==0)
return 0;
else
return pos;
}
[解决办法]

char *matchpos(string a,string b)
{
if(strlen(a) <str(b)) return NULL;
for(int i=0;i <strlen(a);i++)
for(j=0;j <strlen(b);j++)
{
if(a[i]==b[j])
{
char *pos=a+i;
char *p=a+i; char *q=b+j;
while(*p==*q&&q!= '\0 ')
{
p++;q++;
}
if(q== '\0 ')
{
return pos; break;
}
else
{
cout < < "not find match string ";
return NULL;
}
}

读书人网 >C语言

热点推荐