问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请详细解释此题的findstr函数

发布网友 发布时间:2022-05-15 10:07

我来回答

1个回答

热心网友 时间:2023-10-19 19:06

#include <stdio.h>
#include <string.h>
#include <conio.h>
int findStr(char *str, char *substr)
{
int n;//用来保存原串包含子串的个数
char *p,*r;
n=0;
while(*str)//在原串未结束时循环
{
p=str;//p指向原串
r=substr;//r指向子串
while(*r)//子串未结束时循环
{
if(*r==*p)//原串一个字符与子串一个字符相等指针向后移,继续比较下一个字符
{
r++;p++;
}

else//不等则结束该while(*r)循环
{
break;
}
}
if(*r=='\0')//子串结束前都与原串相等说明原串包含子串一次,n要加1
n++;
str++;//比较一次原串后移一位,最后遇‘/0’
}
return n;//返回原串包含子串的个数//继续判断循环while(*str)条件,‘/0’ASCII码为0,跳出循环,函数结束
}
void ReadWrite()
{ char str[81], substr[10], ch;
int n, len, i = 0;
FILE *rf, *wf;
rf = fopen("IN.dat", "r");
wf = fopen("OUT.dat", "w");
while (i < 25)
{ fgets(str, 81, rf);
fgets(substr, 10, rf);
len = strlen(substr) - 1;
ch = substr[len];
if (ch=='\n' || ch==0x1a)
substr[len] = 0;
n = findStr(str, substr);
fprintf(wf, "%d\n", n);
i++;
}
fclose(rf);
fclose(wf);
}
main()
{ char str[81], substr[10];
int n;
printf("输入原字符串:");
gets(str);
printf("输入子字符串:");
gets(substr);
puts(str);
puts(substr);
n = findStr(str, substr);
printf("n=%d\n", n);
ReadWrite();
}

比如你输入:
原串:
nihaonihaonihao
子串:
hao
第一次str是这个串首地址,*str指向第一个字符n
str++后*str指向第二个字符i
当然p是ihaonihaonihao的首地址,*p就指向字符i
r不变,是hao的首地址,*r指向字符h

每次移一个字符,最后*str会指向‘/0’循环结束
你可以上机设断点,单步调试一下看看变量的变化就明白了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
梦见水猴,俗称水鬼。是好是坏 驱虫药多久吃一次 什么情况需要吃打虫药 我的微信公众号太久没有更新被冻结了,怎么样才能注销重新 三星note3画笔画的作品(扩展名SPD)怎么样下载到电脑?怎样转换成JPG格式... 火灾甲乙丙丁类怎么分 什么叫甲类、乙类、丙类和丁类液体 小分子化合物库选哪家放心? 怪物猎人世界肉块交货方法介绍介绍_怪物猎人世界肉块交货方法介绍是什么... 怪物猎人世界肉块获得方法介绍介绍_怪物猎人世界肉块获得方法介绍是什么... 开心消消消赚钱版福利 用matlab写程序:从用户接受一个字符串,并确定用户指定的字母出现在字符串多少次? 老是想放屁怎么办 matlab如何检索txt中顿号后的数字 总是想放屁怎么办 在matlab中如何设计一个统计字符数量的函数 心里老想着要放屁怎么办? 在matlab中findstr函数的作用 总是忍不住要放屁,常用哪几招,可以远离屁多? 梦见两只变异的巨蟒龙蛇吃人 怎么画这类图?用什么软件可以画? anaconda的大蟒蛇2 浙江省建设工程造价管理总站地址和电话 matlab为什么不推荐使用findstr函数而是推荐用strfind 关于变异蛇的恐怖片都有什么了?? 广东省建设工程造价管理总站怎么样? 用什么软件画图(层次图,类图)比较容易而且快 福建省建设工程造价管理总站怎么样? 省工程造价管理总站差额事业编单位怎么样?听说很黑里面,我是学中文的,事业单位考进去了会很累吗? 1、编写函数int strFind(char *str,char c)在字符串str中查找指定字符c;如果有该字符,则返回该字符在字 求好心人分享2021年上映的子剑&#47;李佳怡主演的中国电影《变异巨蟒》高清百度云网盘资源 我最近光放屁是怎么回事 胃胀气且老是想放屁,怎么办 我总是忍不住想放屁,怎么办啊?(跪求) matlab求一篇英文文本中字母出现概率,不分大小写,最好解释一下重要步骤。。 光放屁怎么办啊? 各种断代法是什么时候运用到考古中的? 放射性碳素断代的原理 放射性元素的半衰期为什么可以用来考古 加入社区联合工会申报工会经费比例 放射性同位素14C进行考古断代的原理是什么 两家公司共同成立一个联合工会的账户如何设立经费如何拨付? 工会联合会的经费从哪里来? 求一个以蔬菜为主题的群名和关于蔬菜的昵称 带有“糖”和“菜”的情侣qq昵称,最好要原创哦~ 爱好种菜起什么网名? 关于卡通菜菜的网名 急需呀!!! 移动办公软件人家把你删除了,还有吗? 工会经费每月都交吗 有关提取工会经费? 10米长叠合板如何吊装