C语言统计substr所指的子符串在str所指的字符串中出现的次数

作者&投稿:欧阳咱 (若有异议请与网页底部的电邮联系)
C语言统计substr所指的子符串在str所指的字符串中出现的次数~

从 str[] 长字符串里 找 substr[] 目标字符串,短字符串 出现的个数。
for(i = 0;str[i];i++) // 依次从 第 i 个位置 开始 找。
for(j=i,k=0;substr[k]==str[j];k++,j++)
// j 是 str 里的字符位置,j=i+0,i+1,i+2 ....
// k 是 substr 里的字符位置, k=0,1,2,...
这句 j 循环 是 从 j=i+0 开始找起,只要 substr[k]==str[j] 就往下比较,
循环体 if(substr[k+1]=='\0'){ break; }
如果substr[] 里,下一个字符 是 字符串结束符,表示 目标字符串已循环找到尾巴了,也就是 找到了。于是 break -- 结束本次 循环。结束前 num++ 就是统计 直到目前为止,一共找到了 几个 目标字符串。
-------
你可以用
char str[]="abc123abc"; char substr[]="abc";
去调用, 添加一些中间打印,看看是如何循环和比较的。

#include

void fun(char str[ ],char substr[ ],int *count)
{
int i=0,j=0,n=0;
for(;str[i]!='\0';i++)
{
if(substr[j]=='\0')//循环回来的时候,substr[j]有完全匹配的字符串则n+1
{
n++;
j=0;
}
if(str[i]==substr[j]) //当str[i]和substr[j]相等时候
{
j++;
continue; //跳过下面的,直接继续循环
}
else //不相等的时候,把j赋值0
j=0;

}
if(j!=0) n++; //加这一句,因为最后一次匹配时都退出for循环了,就无法n++了
*count=n;
}

int main()

{
char str[80],substr[80];
int count;
gets(str);
gets(substr);
fun(str,substr,&count);
printf("%d
",count);
return 0;
}

代码在str中不断的扫描substr,当找到第一个相同字符时,则循环比较str与substr剩余的字符串,如果substr中的所有字符都在str中出现(通过substr[k+1] == '\0'判断substr是否已判断到最后一个字符),则判断为找到一次substr的完全匹配,把发现次数加1(num++).然后回到第一层循环,直到扫描完str的每个字符(通过第一层循环中的str[i]是否为0判断).

从 str[] 长字符串里 找 substr[] 目标字符串,短字符串 出现的个数。
for(i = 0;str[i];i++) // 依次从 第 i 个位置 开始 找。
for(j=i,k=0;substr[k]==str[j];k++,j++)
// j 是 str 里的字符位置,j=i+0,i+1,i+2 ....
// k 是 substr 里的字符位置, k=0,1,2,...
这句 j 循环 是 从 j=i+0 开始找起,只要 substr[k]==str[j] 就往下比较,
循环体 if(substr[k+1]=='\0'){ break; }
如果substr[] 里,下一个字符 是 字符串结束符,表示 目标字符串已循环找到尾巴了,也就是 找到了。于是 break -- 结束本次 循环。结束前 num++ 就是统计 直到目前为止,一共找到了 几个 目标字符串。
-------
你可以用
char str[]="abc123abc"; char substr[]="abc";
去调用, 添加一些中间打印,看看是如何循环和比较的。


电脑subst运行报错,什么原因?怎么解决
解决方法:当使用的输入法为微软拼音输入法2003,并且隐藏语言栏时(不隐藏时没问题)关闭RealOne就会出现这个问题,因此在关闭RealOne 之前可以显示语言栏或者将任意其他输入法作为当前输入法来解决这个问题。例四:我的豪杰超级解霸自从上网后就不能播放了,每次都提示 “Ox060692f6”(每次变化)指令引用...

c语言 建立虚拟驱动器
SUBST [drive1: [drive2:]path]SUBST drive1: \/D drive1: 指定要分配路径的虚拟驱动器。[drive2:]path 指定物理驱动器和要分配给虚拟驱动器的路径。\/D 删除被替换的 (虚拟)驱动器。不带参数键入 SUBST,以显示当前虚拟驱动器的列表。你可以动态生成命令用c语言调用 好像是system()函数 ...

我要DOS命令的大全
〔用 法〕 subst 显示当前的替代路径 subst [盘符] [路径] 将指定的路径替代盘符,该路径将作为驱动器使用 subst \/b 解除替代 〔例 子〕 C:\\DOS>subst a: c:\\temp� 用c盘temp目录替代a盘 C:\\>subst a: \/d� 解除替代 tree 显示命令树结构 〔适用场合〕 查看所有的子目录 〔用 法〕 tree ...

请问大佬有Visual Subst(虚拟硬盘软件) V1.06 绿色版软件免费百度云资源...
软件名称:VisualSubst(虚拟硬盘软件)V1.06绿色版 语言:简体中文 大小:78KB 类别:系统工具 介绍:VisualSubst让你可以从任何现有的文件夹创建虚拟驱动器盘符,允许你缩短文件的访问路径以便通过新近创建的驱动器盘符简单地对其进行访问。比如,类似于CDocumentsandSettingsUserMyPhotosamilyAlbum这样的路径将可以...

我想学DOS命令,哪有关于这方面的资料?
qbasic 起动basic语言环境 qbasic\/editor 以全屏方式编辑语言 参数还有: b g h mbf nohi run 〔例 子〕 C:\\DOS>qbasic?? setver 设置版本 〔适用场合〕 当希望使用其它版本的dos命令时可以用它来欺骗电脑。在高版本DOS中,某些旧版本程序需要DOS3.3时,可用setver来设置 〔用 法〕 使用时一般在config.sys...

系统命令
netstat.exe 显示协议统计和当前的 TCP\/IP 网络连接。 nlsfunc.exe 加载特定国家的信息。Windows 2000 和 MS-DOS 子系统不使用该命令接受该命令只是为了与 MS-DOS 文件兼容。 notepad.exe 打开记事本 nslookup.exe 该诊断工具显示来自域名系统 (DNS) 名称服务器的信息。 ntbackup.exe 备份和故障修复工具 ntfrs....

patsubst:模式字符串替换 我想问下什么是模式字符串啊??这是一道linux...
patsubst 应该是 makefile 里的一个函数 (如果你问的 patsubst 是其他语言里的,那就别看下面的了)比方说你在 makefile 里定义了一个变量,内容是一堆 .c 文件的的名字,如 SRC = aaa.c bbb.c my.c his.c 你可以用 patsubst 根据 某种模式,将这些名字改成另外的,比如将这些 .c ...

用lisp语言如何批量修改文字中的某一个字?请高手指教,万分感谢!_百度知...
用ssget取选择集 用assoc把字取出来,然后换掉 用subst把entget出来的表替换掉 然后entmod或entupt,更新下

电脑常用的运行命令?
finger.exe 一个用户并显示出统计结果 fixmapi.exe 修复MAPI文件 flattemp.exe 允许或者禁用临时文件目录 (XP不可用) fontview.exe 显示字体文件中的字体 forcedos.exe 强制文件在DOS模式下运行 ftp.exe FTP下载 gpedit.msc 组策略 gdi.exe 图形界面驱动 grpconv.exe 转换程序管理员组 hostname.exe 显示机器的...

LISP 语言如何修改列表中的某个元素?
;@p1是新点,替换直线起点,直线起点序号为10;&k1是直线(setq #k1 (entget &k1));取得直线属性列表(setq %k1 (assoc 10 #k1));;取得起点元素(setq %k2 (cons 10 @p1));;取得直线起点新元素(setq #k1 (subst %k2 %k1 #k1));;替换元素;以上是坐标点替换方法,其它元素替换基本相同 ...

子洲县13948752803: C语言统计substr所指的子符串在str所指的字符串中出现的次数 -
红郝利君: 从 str[] 长字符串里 找 substr[] 目标字符串,短字符串 出现的个数.for(i = 0;str[i];i++) // 依次从 第 i 个位置 开始 找.for(j=i,k=0;substr[k]==str[j];k++,j++) // j 是 str 里的字符位置,j=i+0,i+1,i+2 ....// k 是 substr 里的字符位置, k=0,1,2,...这句 j 循环 是 ...

子洲县13948752803: 给定程序MODI1.C中函数 fun 的功能是:统计substr所指子字符串在str所指字符串中出现的次数. 例如,若字 -
红郝利君: 比如 在 abcde 中搜索 de,如果使用if(substr[k]=='\0'),在运行过程中会出界吧?比较 abcde\0 和 de\0 比较晚 \0之后还会指向下一个,这样会出界

子洲县13948752803: c语言帮我修改一下.请编写函数fun功能是: 统计substr所指子字符串在str所指字符串中出现的次数 -
红郝利君: #include void fun(char str[ ],char substr[ ],int *count) { int i=0,j=0,n=0; for(;str[i]!='\0';i++) { if(substr[j]=='\0')//循环回来的时候,substr[j]有完全匹配的字符串则n+1 { n++; j=0; } if(str[i]==substr[j]) //当str[i]和substr[j]相等时候 { j++; continue; //跳过下面的,...

子洲县13948752803: C语言程序设计统计str中含有子串substr的个数字符串从键盘
红郝利君: int n=0,j,i; for(i=0;str(i);i++) { for(j=0;substr(j);j++) {if(substr(j)==str(i+j)) else break; } if(substr(j)) else n++; } retun n; 取串的过程没写,你自己补上去吧!主要的实现过程就是这个样子.方法有很多.

子洲县13948752803: c语言上机改错:给定程序MOODII.C中函数fun的功能是:统计substr所指字符串在str所指字符串中出现的次数. -
红郝利君: #include <stdio.h>int fun (char *str,char *substr) {int i,j,k,num=0; /************found************/for(i=0;str[i] != '\0';i++){for(j=i,k=0;substr[k]==str[j];k++,j++){ /************found************/if(substr[k+1]==0){num++;//printf("num:%d\n",num);...

子洲县13948752803: (C语言)帮忙编写求子串函数substr(s,n1,n2) -
红郝利君: //---------------------------------------------------------------------------#include <stdio.h>#include <stdlib.h> char *substr(const char *s,int n1,int n2)/*从s中提取下标为n1~n2的字符组成一个新字符串,然后返回这个新串的首地址*/ { char *sp=malloc(sizeof(char)*(n...

子洲县13948752803: c语言中 编程实现求子串函数 -
红郝利君: #include <stdio.h> #include <stdlib.h> char *substr(const char *s,int n1,int n2)/*从s中提取下标为n1~n2的字符组成一个新字符串,然后返回这个新串的首地址*/ { char *sp=malloc(sizeof(char)*(n2-n1+2)); int i,j=0; for (i=n1; i<=n2; i++) { sp[j++]=s[i]; } ...

子洲县13948752803: c语言 查找substr指向的以空结尾的字节字符串的第一次出现? -
红郝利君: char *mystrstr(char *str, char *substr){int i, j, k=0, len1=0, len2=0;while (str[len1]) len1++;while (substr[len2]) len2++;for (i=0; i<len1-len2; i++){k=1;for (j=0; substr[j]; j++){if (substr[j]!=str[i+j]){k=0;break;}}if (k) break;}if (k) return str+i;else return NULL;}

子洲县13948752803: )编写一个程序,用来从字符串str中找出指定子串substr在该字符串中第一次出现的位 -
红郝利君: ① 如果是C,直接就是strstr这个函数;如果是C++,手段很多, 最直接就是string,然后substr就可以;② 如果是让你自己写一个C程序来实现strstr的功能,那么 int my_strstr(const char *s1, const char *s2) { int retcode = -1; int pos = 0; size_t n; ...

子洲县13948752803: 在线等 C语言中,求字符串子串的函数 -
红郝利君: 在纯C中好像没有,但是C++中很容易,你可以去查一下,网上有很多纯C实现的子串求法string的substr函数是C++的,是STL库中的,而非纯C的实现,纯C的标准库中没有直接获得子串的方法,自己写很容易

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网