父串中子串的个数!!

#include<stdio.h>
#include<string.h>


#define MAX 100 //宏定义字符串长度为100;
int main()
{
char fat[MAX]; //定义父串;
char sub[MAX]; //定义子串;


int i = 0; //定义循环变量;
int j = 0;
int count = 0;

int fat_len = 0; //定义字符数组长度;
int sub_len = 0;

printf("请输入一段字符串(父串):\n");
scanf("%s",fat); //输入数组(父串)fat;


printf("请输入一段字符串(子串):\n");
scanf("%s",sub); //输入数组(子串)sub;


printf("您输入的父串为:\n");
puts(fat); //将fat输入的字符串输出到终端;


printf("您输入的子串为:\n");
puts(sub); //将sub输入的字符串输出到终端;

fat_len = strlen(fat); //使用strlen函数读fat里面的字符串长度赋值给fat_len;
sub_len = strlen(sub);

for(i = 0;i < fat_len;i++) //若i小于字符串长度,i++;
{
for(j = 0;j < sub_len;j++) //若j小于字符串长度,j++;
{
if(fat[i] == sub[j]) //如果字符串内第一个元素相等比较下一个;
{
i++;
j++;
}
else //如果不相等则i继续执行循环sub元素变为第一个,即sub的第一个元素与新的fat元素比较;
{
j = 0;
break; //跳出其所在循环;
}
if(j == sub_len - 1) //若每一个元素都相同,字符串长度为j的值那么说明sub在fat中有一个子串;
{
count++;
}
}
}
printf("父串中的子串数是:\n%d\n",count);


return 0;

}

fat_len = strlen(fat); //使用strlen函数读fat里面的字符串长度赋值给fat_len;

sub_len = strlen(sub);

这个strlen函数必须在scanf后面因为如果你写在前面那么会导致没有长度,那么进行到下一步时就会没有长度那么如果你下面需要用到长度的时候,就不会产生你想要的结果;

if语句执行的时候,是一个一个执行的即判断第一个if后

无论什么结果都会继续进行下一个if语句,就是说这两个语句存在递进关系;

如果想用选择的语句,用switch比较好;

puts(字符数组):

作用是将一个字符串(以‘\0’结束的字符序列)输出到终端;

gets:

从终端输入一个字符串到字符数组,并得到一个函数值;目的是向字符数组输入一个字符串,而不大关心其函数值;


猜你喜欢

转载自blog.csdn.net/YZ_FTB/article/details/80366293