C语言查找字符串
来源:互联网 发布:fifo算法例题 编辑:程序博客网 时间:2024/05/16 06:56
简述
使用c语言实现字符串查找子串,返回第一个子串出现的位置。
环境
ubuntu16.04 LTS
GCC编译器
代码
#include<stdio.h>#define N 100int find_str(char* str1,char* str2){ int i,j,flag=-1; for(i=0,j=0;str1[i]!=NULL;i++) { while(str1[i]==str2[j]&&str1[i]&&str2[j]) { i++; j++; if(str2[j]==NULL) { flag=i-j; return flag; } } j=0; } return flag;}int main(){ int flag; char str1[N],str2[N]; printf("请输入源字符串:\n"); scanf("%s",str1); printf("请输入查找字符串:\n"); scanf("%s",str2); flag=find_str(str1,str2); if(flag!=-1) { printf("已找到!位置:%d\n",flag); } else { printf("未找到!\n"); } return 0;}
解析
函数原型
int find_str(char* str1,char* str2);
- str1为char类型的指针,是被查找的字符串。
- str2为char类型的指针,是需要查找的字符串。
- 返回值int类型。
首先判断str1的第一个元素是否与str2的第一个元素相同?
如果相同,则str1与str2的下标同时增加,指向下一个元素,继续判断下一个元素是否相同,如果不同则跳出并且j恢复初值0,如若相同,继续下一个,直到某一个元素为空不存在,str1[i]先为空,说明已经查询到文件尾,但是未找到!如果str2[j]先为空,则说明已经完全匹配,j为str2长度,i为str1的查找子串尾下标,所以i-j的值为str1中子串首次出现的首位置。
如果第一个元素不相同,则i++,str1的下一个元素与str2的首元素相比,以此类推。
注意flag初值-1,表示未找到返回-1(若找到,下标从0开始)
运行截图
代码截图
运行截图
阅读全文
0 0
- 【C语言】查找字符串
- C语言查找字符串
- C语言字符串查找函数
- C语言字符串查找位置
- C语言字符串查找替换
- C语言实现字符串中查找字符串
- C语言 读取文件 查找字符串
- C语言——字符串查找
- C语言的字符串查找函数
- c语言简单的字符串查找
- C语言字符串查找知识点搬运
- C 语言查找一段字符串最长的字符串
- C语言-在一个字符串中查找是否存在另外一个字符串+查找字符串大写字母个数
- C语言字符串查找的几种实现
- C语言与字符串相关的查找函数
- 【语言-C++】查找两串字符中 最长相等字符串
- C语言 算法"KMP" 查找字符串 ”模式匹配“
- C语言——字符串查找字符的两个函数
- arcgis地理数据库之创建sde用户
- STM32之独立看门狗
- 获取当前的日期时间 格式“yyyy-MM-dd HH:MM:SS”
- App设计实践——Android篇
- Node.js——http && fs模块
- C语言查找字符串
- rxjs简单入门
- SYS/BIOS之Swi
- 36 Three.js高级材质THREE.MeshLambertMaterial
- 今日总结
- CentOs7使用yum源安装jdk和tomcat
- Codeforces Round #435 (Div. 2) B. Mahmoud and Ehab and the bipartiteness
- 所以说先介绍我名字的由来
- 二叉树的基本结构以及建树、遍历(递归、非递归)