要求用字符指针作函数参数,以下是笔者的做法,初学c语言,如有不妥的语法敬请指出!
题目:
请编写一个查找子字符串的程序,并统计子字符串出现的次数。 **输入格式要求:"%s" 提示信息:"请输入主串:" "请输入要查找的串:" **输出格式要求:"%s,%s:" "子串出现的次数:%d\n" "子串不在主串中\n" 程序运行示例1如下: 请输入主串:Hello,world! 请输入要查找的串:l Hello,world!,l:子串出现的次数:3 程序运行示例2如下: 请输入主串:Hello,world! 请输入要查找的串:abc Hello,world!,abc:子串不在主串中
代码:
#include "stdio.h"
int main()
{
void find(char *a,char *b);
char str1[101],str2[101];
printf("请输入主串:");
scanf("%s",&str1);
printf("请输入要查找的串:");
scanf("%s",&str2);
printf("%s,%s:",str1,str2);
find(str1,str2);
return 0;
}
void find(char *a,char *b)//字符指针作为函数参数
{
int n=0,flag;//flag用于判断两个串是否匹配
char *p,*p2;
while(*a!='\0')//主串开始主动循环
{
p=a;//指针p指向此时a指向的位置
p2=b;//指针p2指向b的起始位置,为遍历子串做准备
flag=1;
for(;*p2!='\0';p2++,p++)//指针p2开始向后指,即开始匹配第一个片段串与子串
{
if(*p2!=*p)//如果有一个字符不同,则此次匹配失败
{
flag=0;
break;
}
}
if(flag==1)//匹配成功
{
n++;
}
a++;
}
if(n==0)
printf("子串不在主串中\n");
else
printf("子串出现的次数:%d\n",n);
}
运行结果(中文部分出现乱码):