C 语言中strstr函数实例详解

C 语言中strstr函数实例详解

strstr函数

strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL

const char* strstr(const char* str1,const char* str2);

char* strstr(char* str1,const char* str2);

库中实现的strstr

#include <stdio.h>
#include <string.h> 

int main ()
{
 char str[] ="This is a simple string";
 char * pch;
 pch = strstr (str,"simple");
 strncpy (pch,"sample",6);
 puts (str);
 return 0;
}

模拟实现strstr函数

const char* My_strstr(const char* str1, const char* str2)
{
  assert(str1);
  assert(str2);
  while (*str1 != '\0')
  {
    const char* p1 = str1;
    const char* p2 = str2;
    while ((*p1 != '\0') && (*p2 != '\0') && (*p1 == *p2))
    {
      ++p1;
      ++p2;
    }
    if (*p2 == '\0')
    {
      return str1;
    }
    ++str1;
  }
  return NULL;
} 

int main()
{
  char str1[] = "a wwww qqqqqqqqqqqqqqq";
  char str2[] = "www";
  printf("%s\n", My_strstr(str1, str2));
  system("pause");
  return 0;
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2017-07-01

C语言中判断一个char*是不是utf8编码

C语言中判断一个char*是不是utf8编码 里我修改了一下, 纯ASCII编码的字符串也返回true, 因为UTF8和ASCII兼容 实例代码: int utf8_check(const char* str, size_t length) { size_t i; int nBytes; unsigned char chr; i = 0; nBytes = 0; while (i < length) { chr = *(str + i); if (nBytes == 0) { //计算字节数 i

C语言数据结构之栈简单操作

C语言数据结构之栈简单操作 实验: 编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能: (1)初始化顺序栈 (2)插入元素 (3)删除栈顶元素 (4)取栈顶元素 (5)遍历顺序栈 (6)置空顺序栈 分析: 栈的顺序存储结构简称为顺序栈,它是运算受限的顺序表. 对于顺序栈,入栈时,首先判断栈是否为满,栈满的条件为:p->top= =MAXNUM-1,栈满时,不能入栈; 否则出现空间溢出,引起错误,这种现象称为上溢. 出栈和读栈顶元素操作,先判栈是否为空,为空时不能操作

C语言中双向链表和双向循环链表详解

双向链表和双向循环链表 和单向链表相比,多了一个前驱结点.如果他为空,那么next和prior都指向自己.而对于双循环链表,只需要最后一个元素的next指向head->next,head->next的prior指向最后一个节点即可. 插入操作 新节点s插入链表,s->next给p结点,s->prior给p->prior,然后,p->prior->next指向s,p->prior再指向s.顺序需要注意 s->next = p; s->prior =

C语言 动态内存分配详解

C语言 动态内存分配详解 动态内存分配涉及到堆栈的概念:堆栈是两种数据结构.堆栈都是数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除. 栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表. \在C语言中,全局变量分配在内存中的静态存储区,非静态的局部变量(包括形参)是分配在内存的动态存储区,该存储区被

C语言文件复制实例详解

C语言文件复制实例详解 文件复制,在Linux中,将生成的read.o 重新文件拷贝一份复制到ReadCopy.o中,并且更改ReadCopy.o文件的操作权限.使其能够正常运行. 实例代码: #include <stdio.h> int main(){ FILE *r_file = fopen ("read.o","rb"); FILE *w_file = fopen ("ReadCopy.o","w"); ch

C语言数据结构之循环链表的简单实例

 C语言数据结构之循环链表的简单实例 实例代码: # include <stdio.h> # include <stdlib.h> typedef struct node //定义链表中结点的结构 { int code; struct node *next; }NODE,*LinkList; /*错误信息输出函数*/ void Error(char *message) { fprintf(stderr,"Error:%s/n",message); exit(1)

C语言计算日期差的方法示例

本文实例讲述了C语言计算日期差的方法.分享给大家供大家参考,具体如下: 历史上,不同的人类聚居地可能有不同的历法,因而记录下来的资料中日期的换算就很麻烦.幸好今天我们统一使用公元纪年法.当然,这种历法对求两个日期差多少天也不是十分简便,但毕竟是可以忍受的. 下面的程序计算了两个日期的差值,两个日期都使用公元纪年法. #include <bits/stdc++.h> using namespace std; int to_day(int y, int m, int d) { int mon[]

Android编程实现根据不同日期计算天数差的方法

本文实例讲述了Android编程实现根据不同日期计算天数差的方法.分享给大家供大家参考,具体如下: Calendar cal1 = getCalendarFromDate(mStartDate); long startTime = cal1.getTimeInMillis(); Calendar cal2 = getCalendarFromDate(mEndDate); long endTime = cal2.getTimeInMillis(); int numberOfDays = (int)

javascript求日期差的方法

本文实例讲述了javascript求日期差的方法.分享给大家供大家参考,具体如下: <script type="text/javascript"> function daytonow(year, month, date){ //思路就是转换两个日期为时间戳即毫秒数,再除以每一天的毫秒数得出相隔多少天 //JS中的month是从0开始,所以month要减一 month--; //过去的日子 var tdate = new Date(year, month, date).get

Go语言中的字符串处理方法示例详解

1 概述 字符串,string,一串固定长度的字符连接起来的字符集合.Go语言的字符串是使用UTF-8编码的.UTF-8是Unicode的实现方式之一. Go语言原生支持字符串.使用双引号("")或反引号(``)定义. 双引号:"", 用于单行字符串. 反引号:``,用于定义多行字符串,内部会原样解析. 示例: // 单行 "心有猛虎,细嗅蔷薇" // 多行 ` 大风歌 大风起兮云飞扬. 威加海内兮归故乡. 安得猛士兮守四方! ` 字符串支持转义

Java使用DateFormatter格式化日期时间的方法示例

本文实例讲述了Java使用DateFormatter格式化日期时间的方法.分享给大家供大家参考,具体如下: Java版本:1.8开始 import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; /** * Created by Fra

Java实现字符串解析为日期时间的方法示例

本文实例讲述了Java实现字符串解析为日期时间的方法.分享给大家供大家参考,具体如下: Java版本:1.8开始 import java.time.LocalDate; import java.time.LocalDateTime; /** * Created by Frank */ public class DateParse { public static void main(String[] args) { String armisticeDate = "1914-11-11";

Java计算黑洞数的方法示例

本文实例讲述了Java计算黑洞数的方法.分享给大家供大家参考,具体如下: 任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456.求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,则前边补0).如此往复,数字会落入某个循环圈(称为数字黑洞). 比如,刚才的数字会落入:[82962,75933, 63954, 61974]这个循环圈. 请编写程序,找到5位数所有可能的循环圈,并输出,每个循环圈占1行.其中5

Python实现生成随机日期字符串的方法示例

本文实例讲述了Python实现生成随机日期字符串的方法.分享给大家供大家参考,具体如下: 生成随机的日期字符串,用于插入数据库. 通过时间元组设定一个时间段,开始和结尾时间转换成时间戳. 时间戳中随机取一个,再生成时间元组,再把时间元组格式化输出为字符串 import time import random a1=(1976,1,1,0,0,0,0,0,0) #设置开始日期时间元组(1976-01-01 00:00:00) a2=(1990,12,31,23,59,59,0,0,0) #设置结束日

JS手机端touch事件计算滑动距离的方法示例

本文实例讲述了JS手机端touch事件计算滑动距离的方法.分享给大家供大家参考,具体如下: 计算手势在手机屏幕上滑动时,手势滑动的距离,代码如下: function wetherScroll(){ var startX = startY = endX =endY =0; var body=document.getElementsByTagName("body"); body.bind('touchstart',function(event){ var touch = event.tar

PHP中的日期加减方法示例

几乎所有从事程序开发的程序员都遇到时间处理问题,PHP开发也一样,幸运的是PHP提供了很多关于日期时间函数.只要经常使用这些函数,搭配使用,日期时间处理上就熟能生巧了. 今天要讲的这个例子,需求是这样的.得知某个日期时间, 如:2012-04-25 10:10:00 我要在这个日期时间的基础上加上5个月并返回处理后的日期 结果:2012-04-25 10:10:00 加5个月等于 2012-09-25 10:10:00 这个需求看似简单,但还是有点棘手,因为PHP没有直接提供yyyy-mm-dd