strstr匹配

有一个在给定字符串中查找子串的函数strstr,该函数从给定的字符串src中查找substr并返回一个整数,指明substr第一次出现的位置(从0开始计数),如果找不到则返回-1。
要求:
1、实现该函数。
2、为该函数设计与实现单元测试。
说明:
1、代码中不允许使用系统已有的库函数,所有用到的库函数都需要自己实现
2、允许使用任何编程语言,函数原型自行给定。参考的C语言函数原型为 int strstr(char* src , char* substr)
#include<stdio.h>

int strstr(char* src , char* substr)
{
	int location=-1;
	int len_src;
	int len_subsrc;
	int i,j;
	i=0;
	while (src[i]!=‘\0‘)
	{
		i++;
	}
	len_src=i;
	j=0;
	while (substr[j]!=‘\0‘)
	{
		j++;
	}
	len_subsrc=j;
	printf("%3d,%3d\n",len_src,len_subsrc);
	i=0;
	while(len_src-i>len_subsrc)
	{
		j=0;
		while((substr[j]==src[i])&&(substr[j]!=‘\0‘))
		{
			printf("%c,%c\n",src[i],substr[j]);
			j++;
			i++;
		}
		if(j==0)
		{
			i++;
		}
		printf("----------\n");
		if(j==len_subsrc)
		{
			location=i-j;
			break;
		}
	}
	if(location!=-1)
		return location;
	else
		return -1;

}
void main()
{
	char *src="ahdgsgabcwehdaj";
	char *substr="abcwe";
	//strstr(src,substr);
	int result=strstr(src,substr);
	printf("%3d\n",result);
}
时间: 2024-10-05 21:04:58

strstr匹配的相关文章

POJ3450 Corporate Identity 【KMP 暴力strstr可过】

题目描述 给你n个字符串,问其最长的公共串是啥.如果长度都是最长,输出字典序小的. Sample Input 3 aabbaabb abbababb bbbbbabb 2 xyz abc 0 Sample Output abb IDENTITY LOST 解题思路 取第一个字符串O(n^2)遍历,对其他字符串直接strstr匹配即可. 用KMP当然最好. 用ans存放当前的最优解. 下面是代码 #include <cstdio> #include <cstring> const i

MSVC查看类的对象内存布局

虽说自己对内存对象内存布局这一块还算比较熟悉(鄙人这么认为),但是实际要可视化一个内存布局,还是没做过,今天在网上瞎逛,突然发现了MSVC居然支持输出对象的布局结构,这个命令嘛,就是-d1reportSingleClassLayout和-d1reportAllClassLayout了. 顾名思义,前者用于输出指定名字的类的结构,后者则是输出全部的类的结构,试了下后面的命令,发现按下Enter键后,留给鄙人的不是这个文件所得对应的类的内存结构,而是将近几秒的刷屏.....所以还是-d1report

PHP学习笔记之POSIX正则表达式

1 基础知识 正则表达式是一种描述一段文本模式的方法.到目前为止,我们前面所用到过的精确(文字)匹配也是一种正则表达式.例如,前面我们曾搜索过正则表达式的术语,像"shop"和"delivery". 在PHP中,匹配正则表达式更有点像strstr()匹配,而不像相等比较,因为是在一个字符串的某个位置(如果不指明则可能在字符串中的任何位置)匹配另一个字符串.例如,字符串"shop"匹配正则表达式"shop".它也可以匹配正则表达

C/C++用strncpy()与strstr()分割与匹配查找字符串

最近做题遇到分割与匹配字符串的题目(hdu5311),看来别人的代码,才知道有strncpy()和strstr()函数,于是搜集了一点资料,记录一下基本用法. 一.strncpy() char * strncpy ( char * destination, const char * source, size_t num ); strncpy() 在 <string.h>头文件中(C++中为<cstring>),拷贝原字符串S中长度为num的部分至目标字符串D中. #include

strstr函数

语法 strstr(string,search,before_search) 参数解析 参数 描述 string 必需.规定被搜索的字符串. search 必需.规定所搜索的字符串. 如果此参数是数字,则搜索匹配此数字对应的 ASCII 值的字符. before_search 可选.默认值为 "false" 的布尔值. 如果设置为 "true",它将返回 search 参数第一次出现之前的字符串部分. 示例 <?php     echo strstr(&quo

C++ string 字符串查找匹配

在写C++程序中,总会遇到要从一个字符串中查找一小段子字符串的情况,对于在C中,我们经常用到strstr()或者strchr()这两种方法.而对于C++的string,我们往往会用到find(). C++:#inlcude<string>C: #include<string.h> find():在一个字符串中查找一个指定的单个字符或字符数组.如果找到,就返回首次匹配的开始位置:如果没有查找到匹配的内容,就返回string::npos.find_first_of():在一个目标串中进

从C++strStr到字符串匹配算法

字符串的匹配先定义两个名词:模式串和文本串.我们的任务就是在文本串中找到模式串第一次出现的位置,如果找到就返回位置的下标,如果没有找到返回-1.其实这就是C++语言里面的一个函数: extern char *strstr(char *str1, const char *str2); 对于这个函数的解释: str1: 被查找目标 str2: 要查找对象 返回值:如果str2是str1的子串,则返回str2在str1的首次出现的地址: 如果str2不是str1的子串,则返回NULL. 例如: cha

Implement strStr() &amp;&amp; kmp算法

用这题复习下kmp算法.kmp网上坑爹的是有很多种匹配方式,容易混淆,后人要警惕啊.这里对要查找的字符串的next全部置为-1,预处理时i和next[i-1]+1相比较.和http://kb.cnblogs.com/page/176818/ 这里相似.预处理完再匹配,第i个字符不匹配则比较第next[i-1]+1个. class Solution{ public: char *strStr(char *haystack, char *needle){ if(haystack == NULL ||

LeetCode Implement strStr()

Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. Update (2014-11-02): The signature of the function had been updated to return the index instead of the pointer. If you still