不使用C程序已有函数,模拟C++的strstr函数

strstr函数--输出主串的子串及其后面的所有字符

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

int main(int arc, char** argv)
{
	char* str="cjc is a master!";
	char* substr="is";
	bool flag=false;

	int  len=strlen(str);
	int sublen=strlen(substr);
	int index=0;
	for(int i=0;i<len;i++)
	{
		flag=false;
		for(int j=0;j<sublen && flag==false;j++)
		{
			if(str[i+j] != substr[j])
			{
				flag=true;
			}
		}

		if(flag==false)
		{
			index=i;
			break;
		}
	}

	for(int i=index;i<len;i++)
	{
		cout<<str[i];
	}
	cout<<endl;

	system("pause");
	return 0;
}

不使用C程序已有函数,模拟C++的strstr函数

时间: 2024-08-18 19:52:25

不使用C程序已有函数,模拟C++的strstr函数的相关文章

C语言——常用标准输入输出函数 scanf(), printf(), gets(), puts(), getchar(), putchar(); 字符串拷贝函数 strcpy(), strncpy(), strchr(), strstr()函数用法特点

1 首先介绍几个常用到的转义符 (1)     换行符"\n", ASCII值为10: (2)     回车符"\r", ASCII值为13: (3)     水平制表符"\t", ASCII值为 9: (4)     空字符"\0" ,ASCII值为0: (5)     空:NULL (即为0): (6)     空格键space, ASCII值为32: 2 常用输入输出函数 scanf() , 从缓冲区读入数据,以空格,制

一些常用函数模拟实现

我们库函数中提供给我们很多函数,我们虽然不需要自己去实现这些函数,但是我认为自己亲自去实现一下这些函数对我们有很大的好处. 我们可以根据自己的想法实现这些函数的功能,然后再看一下库里面是怎么实现它们的,比较一下,看看函数的实现方式的异同之处,这样我们可以找出自己的不足之处,学习库函数的实现思维,帮助我们提升编程能力. 下面是一些函数的实现: strstr函数的实现: char *my_strstr(const char *str1, const char *str2) {assert(str1)

C语言模拟实现memcpy,memmove函数

这里memcpy与memmove函数的模拟实现,需要用到空指针来传递参数,之后强制类型转换为char型,用size_t这个宏接受偏移量进行偏移,模拟实现如下: memcpy函数: void* my_memcpy(void*dst,const void*src ,size_t count) { assert(dst); assert(src); void* ret = dst; while (count--) { *(char*)dst = *(char*)src; dst = (char*)ds

xp中 “控制面板”-&gt;“用户帐户”-&gt;“更改用户登录注销方式” 出现 一个最近安装的程序已停用欢迎界面和快速用户切换

xp中 "控制面板"->"用户帐户"->"更改用户登录注销方式" 弹出提示框:出现 一个最近安装的程序已停用欢迎界面和快速用户切换.您必须卸载该程序以恢复这些功能.下列文件名可以帮您识别该程序所作的修改:xxx.dll 如图: 出现这个现象,首先打开注册表 \HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon  看是否有 Ginadll项,有

用缓动函数模拟物理动画

1.缓动函数简介      <1>缓动函数的动画效果是建立在CALayer层级的关键帧动画基础之上 也就是说用普通的UIView的Animation是无法直接实现缓动函数 <2>缓动函数是一系列模拟物理效果(如抛物线)方程式的统称,用以计算给定两点之间的插值 <3>两点之间插的值越多,效果越好,但是会耗费更多的性能 <4>只有理解了缓动函数的原理才有可能写出自己想要的效果 学习来自:<极客学院>之 "用缓动函数模拟物理动画"

OpenCV 无法启动此程序,因为计算机中丢失opencv_core249.dll。请尝试重新安装改程序已解决此问题

换了64位的系统,配置好之后运行之前的程序,竟然给我抛出这个错误.应该是我的opencv没有安装对吧.系统报错 无法启动此程序,因为计算机中丢失opencv_core249.dll.请尝试重新安装改程序已解决此问题 那就是缺少opencv_core249.dll动态链接库了. [解决方法] 1 在安装目录下找到这个链接库 (但是不知道为什么我引用的库还是要x86下的才行,郁闷中) 2 复制到指定的目录下 64位系统 C:\Windows\SysWOW64 32位系统 C:\Windows\Sys

模拟实现strstr函数

写一个函数,模拟strstr()函数,strstr()函数主要将主串中子串,以及以后的字符全部返回. 比如:在abbcdeef中查找bcde,返回bcdeef 思想: 1.遍历整个长串,然后找到与短串相同的位置,并且记录这个位置 2.与短串依次比较,若在后面某个位置不相同了,这时候,将刚记录的长串的位置后移一位继续比较:若一直都相同,则返回刚才记录的位置 3.如果长串遍历都没找到,则返回NULL #include<stdio.h> #include<stdlib.h> #inclu

【面试题】C语言:模拟实现内存放置函数memset()

模拟实现内存放置函数memset() 我们查看库函数可知,函数原型为: void * __cdecl memset ( void *dst, int val, size_t count),我们常用于将数组arr向后几个字节初始化置为0,而并不怎么用于置为其他元素,如1.这是因为: val = 1,是int型,将它赋给char型dest,则只把低八位赋给dest,下次再接着循环,每次都只把一个字节长度的1赋给dest.如此重复count次,结束.在输出过程中,而arr是int型,一个int型是4个

C语言中模拟实现strcpy,strstr,strcat函数

在C中,要模拟实现这几个库函数,是对指针的传参与函数的调用的考察,代码如下,仅供参考 strcpy函数: #include <assert.h> char* my_strcpy(char* dest, const char* src) { assert(dest);//断言指针的有效性 assert(src); char*pa = dest; while (*dest++ = *src++) ; return pa; } strstr函数: int my_strstr(const char*s