学习笔记——strstr函数的C语言实现,不调用库函数
2010-10-18 00:56
429 查看
原型:char *strstr(char *haystack, char *needle);
用法:#include <string.h>
功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符'/0')。
说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。
C代码实现如下:
#include <stdio.h>
#include <assert.h>
char *myStrstr(const char *str1, const char *str2)
{
char *s1, *s2;
assert((str1 != (char *)0) && (str2 != (char *)0)); //对两指针加非0 断言
if (str1 == str2) //如果两指针指向同一地址,直接返回str1
{
return (char *)str1;
}
while (*str1) //str1用于记录找到子窜的位置
{
s1 = (char *)str1;
s2 = (char *)str2;
//当str2中有字符与str1中的相同并且str1和str2都未至末尾时,循环
while ((*s1 == *s2) && *s1 && *s2)
{
s1++;
s2++;
}
//如果str2已经遍历至末尾('/0')时,说明在str1中找到了子窜str2
if ('/0' == *s2)
{
return ((char *)str1); //返回找到的位置
}
str1++;
}
/* 查找不成功,返回NULL */
return ((char *)0);
}
int main(int argc,char *argv[])
{
char a[20]="Hello world!";
char b[20]="world";
char *c = "llohe";
char *d;
char *f;
d = myStrstr(a,b);
f = myStrstr(a,c);
if (d)
printf("%s/n", d);
else
printf("Not found!/n");
if (f)
printf("%s/n", f);
else
printf("Not found!/n");
return 0;
}
用法:#include <string.h>
功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符'/0')。
说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。
C代码实现如下:
#include <stdio.h>
#include <assert.h>
char *myStrstr(const char *str1, const char *str2)
{
char *s1, *s2;
assert((str1 != (char *)0) && (str2 != (char *)0)); //对两指针加非0 断言
if (str1 == str2) //如果两指针指向同一地址,直接返回str1
{
return (char *)str1;
}
while (*str1) //str1用于记录找到子窜的位置
{
s1 = (char *)str1;
s2 = (char *)str2;
//当str2中有字符与str1中的相同并且str1和str2都未至末尾时,循环
while ((*s1 == *s2) && *s1 && *s2)
{
s1++;
s2++;
}
//如果str2已经遍历至末尾('/0')时,说明在str1中找到了子窜str2
if ('/0' == *s2)
{
return ((char *)str1); //返回找到的位置
}
str1++;
}
/* 查找不成功,返回NULL */
return ((char *)0);
}
int main(int argc,char *argv[])
{
char a[20]="Hello world!";
char b[20]="world";
char *c = "llohe";
char *d;
char *f;
d = myStrstr(a,b);
f = myStrstr(a,c);
if (d)
printf("%s/n", d);
else
printf("Not found!/n");
if (f)
printf("%s/n", f);
else
printf("Not found!/n");
return 0;
}
相关文章推荐
- what's in string? c语言string类函数实现汇总 都是学习使用指针的好例子啊(算是读书摘抄和笔记吧)
- 数据结构 学习笔记之:顺序栈的C语言实现
- 学习笔记——atoi函数的用法及用C语言实现atoi
- 轻量级远程调用框架-Hessian学习笔记-Demo实现
- 轻量级远程调用框架-Hessian学习笔记-Demo实现
- 学习笔记——线性表的动态分配顺序存储结构基本操作(C语言实现)
- 数据结构学习笔记-串(C语言实现)
- Unix编程学习笔记--------系统调用的疑问????? 到底什么是系统调用???? 系统调用是如何实现的???
- 数据结构学习笔记-线性表链式存储(C语言实现)
- aswing学习笔记4-通过调用面板中的按钮实现主界面动态切换皮肤的问题!
- 关于一个工程中多个文件的相互调用的学习笔记(C语言)
- 学习笔记——atoi函数的用法及用C语言实现atoi
- 数据结构学习笔记-队列的链式存储(C语言实现)
- 企业库EnterpriseLibrary学习笔记之--通过企业库Microsoft.Practices.EnterpriseLibrary,实现调用存储过程的封装
- 学习c语言遇到的一些问题(1)(Linux)(调用库函数)
- Spring AOP框架学习笔记(2):AOP拦截器调用的实现
- (学习笔记)栈数据结构中压(入)栈操作(C语言实现)
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- JAVA中native方法调用C语言实现学习
- C语言学习笔记【函数】函数调用与变量的作用域