字符串中查找子串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串中查找子串相关的知识,希望对你有一定的参考价值。
使用C语言编写程序:
1、在字符串中查找一个指定的字符第一次出现的位置,并返回字符所在的位置,如果不存在则返回NULL
具体实现如下:
char* strchr(char const *str, int ch) { char* st = (char*)str; while (st) { if (*st == ch) return st; st++; } return NULL; }
2、在字符串中查找一个指定的字符串第一次出现的位置,并返回字符所在的位置,如果不存在则返回NULL
具体实现如下:
char* strstr(char const *s1, char const *s2) { char* str = (char*)s1; char* ch = (char*)s2; char* cur = str;//设置cur标志位 while (cur) { char* p1 = cur; char* p2 = ch; while (p1 && p2 && *p1 == *p2)//注意此处用*p1和*p2比较两个是否相同 { p1++; p2++; } if (*p2 == ‘\0‘)//注意此处不能用p2==NULL return cur; else cur++; } return NULL; }
测试如下:
void test() { char const* str = "abaabcde"; int ch = ‘b‘;//strchr查找字符 char* arr = "abc";//strstr查找字符串 printf("%p----%p\n", str + 1, strchr(str, ch));//找到ch返回ch指针,否则为NULL printf("%p----%p\n", str + 3, strstr(str, arr));//找到arr返回子串指针,否则为NULL }
小知识:编写程序判断你的电脑是小端存储还是大端存储。
大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;
小端模式:是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。
void test() { int num = 3;//Ox000003 char* p = (char*)# for (int i = 0; i < 4; i++) { printf("%d ", *p); p++; } if (3 == *(char*)&num) { printf("小端存储!\n"); } else { printf("大端存储!\n"); } }
本文出自 “Materfer” 博客,请务必保留此出处http://10741357.blog.51cto.com/10731357/1758613
以上是关于字符串中查找子串的主要内容,如果未能解决你的问题,请参考以下文章