#include <stdio.h>
#include <string.h>bool search_str(char *str1, char *str2); //对下面子函数进行声明void main()
{char str1[20],str2[20]; //定义两个字符串bool res; //定义一个bool型变量printf("输入一个较短的字符串 n");gets(str1); //获取str1字符串printf("输入一个较长的字符串 n");gets(str2); //获取str2字符串res = search_str(str1, str2); //给res赋值函数运行结果printf("res = %d n1为真,0为假n",res); //因为值是0和1,所以可以用%d来表示
}
bool search_str(char str1[], char str2[]) //使用bool(布尔)来标记函数的类型,即只能返回true(1)或者false(0)两个值
{char len1,len2; //定义两个字符串的长度变量char i,j,k; //i,j两个都是循环用的变量char count = 0; //定义一个标记的变量 需要赋初值0char count2 = 0;len1 = strlen(str1); //获取str1字符串的长度len2 = strlen(str2); //获取str2字符串的长度for(k=0;k<(len2-len1+1);k++){ char temp[20] = {""}; //定义一个空的字符串tempstrncpy(temp, str2+k, len1); //给temp赋予str2里面len1长度的字符串puts(temp); //打印temp字符串for(i=0;i<len1;i++) //大循每次都对tr1加一位进行比较{ for(j=0;j<len1;j++) //每个小循环都把str1里面的哪一位给str2里面所有的字符进行比较,当出现相等的时候,跳出这个小循环。{if(strcmp(str1, temp) == 0) //条件判断str1里面的字符是否与str2{ //*指针与字符串功能是一样的也可以用字符串来代替。count = len1; //一个标记位,每次寻找到相同字符的时候标记为加一。break; //标记为加一以后立刻调出此循环。}}}if(len1 == count) //判断len1的值是否等于count,等于则进入函数里面{count2=1; //count2等于1,表明已经找到与之相对应的字符串break; //跳出这个循环}else //如果len1不等于count{count2=0; //给count2赋值0表示没有这个字符节选,继续下一次循环,直到循环结束}}if(count2 == 1) //等到循环结束进行判断,count2为1则返回true{return true; }if(count2 == 0) //等到循环结束进行判断,count2为0则返回false{return false;}}
本文发布于:2024-01-28 01:00:55,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063748653707.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |