指针作为函数参数,指针访问字符数组元素06(C)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ukco_well/article/details/82085006

编写一个函数,查找字符串s1 中是否包含字符串 s2,并返回找到的第一个子串的起始位置,如果 s1 中没有 s2, 则返回-1。编写程序测试该函数。例如: s1: abcdefghdef, s2: def。则函数返回第一个 def 的起始位置: 3。
 

 

/*================================================================================================================
*学号:1527403059
*作业:E70
*功能:查找字符串s1中是否包含字符串s2,并返回找到的第一个子串的起始位置,如果s1中没有s2则返回-1。编写程序测试该函数
*作者:陆胤任
*日期:2015.12.26
*===================================================================================================================*/
#include<stdio.h>
#define N 100

/*function define
*@brief:查找字符串s1中是否包含字符串s2,并返回找到的第一个子串的起始位置,如果s1中没有s2,则返回-1
*@param:char *p1:首地址
        char *p2:首地址
		int flag:字符串的起始位置
*@reval:flag:字符串的起始地址  -1:没有子字符串*/
int find_str1_str2(char *p1,char *p2)                                                             //定义find_str1_str2(char *p1,char *p2)函数
{
	int count1=0,count2=0;
	int count;
	int i,j,k,a;
	int flag;
	while(p1[count1]!='\0')                                                                      //计算s1的实际长度
	{
		count1++;
	}
	while(p2[count2]!='\0')                                                                     //计算s2的实际长度
	{ 
		count2++;
	}
	for(i=0;i<count1;i++)                                                                      //循环判断s1中是否有子字符串s2
	{
		if(p1[i]==p2[0])
		{
			a=i;                                                                              //保存子字符串首地址
			count=0;
			for(k=i,j=0;k<=i+count2-1,j<=count2-1;k++,j++)
			{
				if(p1[k]==p2[j])
				{
					count++;
				}
				else
			    {                                                                     //若没有子字符串则让a=-1
					count=0;
				}
			}
		}
	}
        if(count==count2)                                                                                      
	    {
		     flag=a;
	    }
	    else                                                                                                         
	   {
		    flag=-1;
	   }
	return flag;                                                                         //把变量flag的值作为函数返回值
}

/*test program*/
int main()
{
	char str1[100],str2[100];
	int flag;
	printf("请输入长度小于100的字符串str1:\n");
	gets(str1);                                                                             //输入字符串str1
	printf("请输入长度小于100的字符串str2:\n");
	gets(str2);                                                                             //输入字符串str2
	flag=find_str1_str2(str1,str2);                                                         //调用find_str1_str2(char *p1,char *p2)函数
	if(flag==-1)
	{
		printf("字符串str1中不包含子字符串str2\n");
	}
	else
	{
		printf("字符串str1中包含子字符串str2,字符串首地址为%d\n",flag);
	}
    return 0;
}

 

展开阅读全文

没有更多推荐了,返回首页