| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1223 人关注过本帖
标题:书上遇到的,不太理解,求助大神讲解
只看楼主 加入收藏
Aleen
Rank: 1
等 级:新手上路
帖 子:13
专家分:3
注 册:2018-7-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
书上遇到的,不太理解,求助大神讲解
程序功能:调用find函数在输入的字符串中寻找是否出现“this”这个单词,如果查到返回出现次数;如果未找到返回0。
程序代码:
#include <stdio.h>
int find(char *str)
{

 char *fstr="this";

 int i=0,j,n=0;      

 while (str[i]!='\0')

 {
     for(j=0;j<3;j++)

 if (str[j+i]!=fstr[j]) break;

 if(j==3)n++;

 i++;

 }

 return n;
}

int main(void)
{  char a[80];
   gets(a);
   printf("%d",find(a));
}

 
搜索更多相关主题的帖子: 讲解 find int char str 
2018-07-23 14:22
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:7 
“求助大神讲解”
--- 讲解什么?是代码不懂,需要讲解代码的逻辑,还是结果不正确,需要指出哪里错误?

代码中的“3”是哪里来的?
若想高效,看看kmp、bm、bmh 等算法


2018-07-23 14:59
Aleen
Rank: 1
等 级:新手上路
帖 子:13
专家分:3
注 册:2018-7-19
收藏
得分:0 
。。。。

[此贴子已经被作者于2018-7-23 16:06编辑过]

2018-07-23 15:59
Aleen
Rank: 1
等 级:新手上路
帖 子:13
专家分:3
注 册:2018-7-19
收藏
得分:0 
主要是下面这段代码不懂
   for(j=0;j<3;j++)
 if (str[j+i]!=fstr[j]) break;
 if(j==3)n++;
 i++;
我也不知道3是什么,书上写的是the的长度,但我觉得可能是this的长度,所以应该是4.

[此贴子已经被作者于2018-7-23 16:02编辑过]

2018-07-23 15:59
kfyniriu
Rank: 6Rank: 6
等 级:侠之大者
威 望:9
帖 子:105
专家分:426
注 册:2018-7-6
收藏
得分:7 
回复 4楼 Aleen
就是根据你输入的字符串逐个和this这个单词对比,只有当4个单词都对上了才算正确,中间要是有一个对不上就跳出,接着读下一个你输入的字符进行对比。对比this,j的取值是4,不是3
2018-07-23 19:08
快速回复:书上遇到的,不太理解,求助大神讲解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013796 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved