详解C语言对字符串处理函数的实现方法

目录
  • strlen:
    • 1.计数器版本:
    • 2.递归的版本
    • 3.指针-指针版本
  • strcat:
  • strcmp:
  • 总结

strlen:

1.计数器版本:

#include<stdio.h>
#include<string.h>
#include<assert.h>
int my_strlen(const char *str)
{
	int count =0;
	assert(str!=NULL);
	while(*str!='\0')
	{
		count++;
		str++;
	}
	return count;
 } 

2.递归的版本

int my_strlen(const char *str)
{
 assert(str != NULL);
 if (*str == '\0')
 return 0;
 return (my_strlen(++str)+1);
}

3.指针-指针版本

int my_strlen(const char *str)
{
  char *end = str;
  assert(str!=NULL);
  assert(end!=NULL);
  while (*end != '\0')
  {
   end++;
  }
   return end - str;
}

strcat:

#include<stdio.h>
#include<string.h>
#include<assert.h>
char *my_strcat(char *dest,char *str)
{
	char *ret=dest;//存dest的首地址
	assert(dest&&str);
	while(*dest)
	{
		dest++;
	}
	while(*dest++=*str++);
	dest=ret;
	return dest;
}

strcmp:

int my_strcmp(char *str1, char *str2)
{
	assert(str1&&str2);
	while(*str1==*str2)
	{
		if(str1=='\0'&&str2=='\0')
		return 0;
		str1++;
		str2++;
	}
	if(*str1>*str2)
	return 1;
	return -1;
	 //或return str1-str2;
 } 

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • 实现C语言常用字符串库函数

    目录 strlen strcpy strcat strcmp 总结 strlen 数组长度的计算是通过strlen来的,它的作用就是判断给定的数组元素个数,直到碰到\0结束 函数原型 size_t strlen ( const char * str ); 废话少说,直接上代码 int my_strlen(char *str) { char* ch=str; int count=0; while(*ch!='\0') { count++; ch++; } return count; } 但考虑到安

  • 一篇文章教你用C语言模拟实现字符串函数

    目录 前言 模拟 1.strlen 函数 2.strcpy 函数 3.strcat 函数 4.strcmp函数 5.strncpy函数 6.strncat函数 7.strncmp函数 8.strstr函数 9.strtok函数 总结 前言 编程过程中经常会使用到一些字符串函数,这些字符串函数都在C语言标准库中,我们可以直接使用.但我们也要了解一下它们是如何实现的. 模拟 1.strlen 函数 strlen函数是用来求字符串长度的.官方给出的解释如图 返回值类型是无符号整型,参数类型是char*

  • C语言字符串函数操作(strlen,strcpy,strcat,strcmp)详解

    目录 一.strlen函数模拟 二. strcpy函数模拟  三.strcat函数模拟 四.strcmp函数模拟 总结 一.strlen函数模拟 字符串以'\0'作为结束标志,strlen函数返回的是在字符串中'\0'前面出现的字符个数(不包括'\0'); 有三种方法可以实现该操作: ①计数器方式 ②不能创建临时变量计数器 ③指针-指针  方法一:计数器方式 int my_strlen(const char* str) { int count = 0;//定义count用来记录字符串数组中字符数

  • 浅谈C语言之字符串处理函数

    下面介绍8种基本的常用的字符串处理函数,在数值数组中也常常用到(部分函数).所有的C语言编译系统中一般都提供这些函数. 1.puts函数--输出字符串的函数 一般的形式为puts(字符串组) 作用:将一个字符串输出到终端.如,char一个string,并赋予初值.调用puts(string);进行字符串的输出. 2.gets函数--输入字符串的函数 一般的形式:gets(字符数组) 作用:从终端输入一个字符串到字符数组,并且得到一个函数值成为字符数组的起始地址. gets(str); 键盘输入,

  • C语言实现常用字符串库函数(推荐)

    目录 一.实现memcpy 二.memmove模拟实现 三.strlen的模拟实现 1.计数器方法: 2.递归方式: 3.利用指针实现: 四.strcpy的模拟实现 五.strcmp的模拟实现 六.strstr模拟实现 七.模拟实现strcat 一.实现memcpy 将src所指向的内容拷贝到dst所指向的位置,拷贝len个字节. memcpy是内存拷贝函数 memcpy在使用的时候不用考虑类型,以字节为单位进行拷贝 遇到"\0"的时候不会停下,所以拷贝字符串的时候最好还是用strcp

  • 详解C语言对字符串处理函数的实现方法

    目录 strlen: 1.计数器版本: 2.递归的版本 3.指针-指针版本 strcat: strcmp: 总结 strlen: 1.计数器版本: #include<stdio.h> #include<string.h> #include<assert.h> int my_strlen(const char *str) { int count =0; assert(str!=NULL); while(*str!='\0') { count++; str++; } ret

  • 详解C语言内核字符串转换方法

    在内核编程中字符串有两种格式ANSI_STRING与UNICODE_STRING,这两种格式是微软推出的安全版本的字符串结构体,也是微软推荐使用的格式,通常情况下ANSI_STRING代表的类型是char *也就是ANSI多字节模式的字符串,而UNICODE_STRING则代表的是wchar*也就是UNCODE类型的字符,如下文章将介绍这两种字符格式在内核中是如何转换的. 在内核开发模式下初始化字符串也需要调用专用的初始化函数,如下分别初始化ANSI和UNCODE字符串,我们来看看代码是如何实现

  • 详解C语言内核字符串拷贝与比较

    在上一篇文章<驱动开发:内核字符串转换方法>中简单介绍了内核是如何使用字符串以及字符串之间的转换方法,本章将继续探索字符串的拷贝与比较,与应用层不同内核字符串拷贝与比较也需要使用内核专用的API函数,字符串的拷贝往往伴随有内核内存分配,我们将首先简单介绍内核如何分配堆空间,然后再以此为契机简介字符串的拷贝与比较. 首先内核中的堆栈分配可以使用ExAllocatePool()这个内核函数实现,此外还可以使用ExAllocatePoolWithTag()函数,两者的区别是,第一个函数可以直接分配内

  • c语言中字符串分割函数及实现方法

    1.问题引入 自己在写一个linux下的模拟执行指令的时候,遇到了输入"cat a.c",要将该字符串分解成cat和a.c两个单独的字符串,虽然知道有strtok的存在,但是想自己尝试写一下,于是就自己写了一个,不过总是遇到这样或那样的问题,虽然最后调通了,不过确浪费了不少时间:后来作业交上去以后又仔细阅读了strtok函数,发现原来linux下已经改成strsep,所有在这里就写一下自己所走的过程. 2.自己写的字符串分割函数:用于分割指令,比如cat a.c最后会被分割成cat和a

  • 详解R语言caret包trainControl函数

    目录 trainControl参数详解 源码 参数详解 示例 trainControl参数详解 源码 caret::trainControl <- function (method = "boot", number = ifelse(grepl("cv", method), 10, 25), repeats = ifelse(grepl("[d_]cv$", method), 1, NA), p = 0.75, search = "

  • 详解C语言的mem系列函数

    目录 1.memchr 2.memcmp 4.memmove 5.memset 总结 1.memchr memchr的函数声明: void *memchr(const void *str, int c, size_t n); 作用: memchr函数从str位置后的n个位置开始寻找,寻找第一个和c相同的字符.如果成功,memchr函数返回一个指向该字符位置的指针,如果没有没有找到指定字符,则返回NULL. 实例: #include <stdio.h> #include <string.h

  • 详解C语言编程中的函数指针以及函数回调

    函数指针: 就是存储函数地址的指针,就是指向函数的指针,就是指针存储的值是函数地址,我们可以通过指针可以调用函数. 我们先来定义一个简单的函数: //定义这样一个函数 void easyFunc() { printf("I'm a easy Function\n"); } //声明一个函数 void easyFunc(); //调用函数 easyFunc(); //定义这样一个函数 void easyFunc() { printf("I'm a easy Function\n

  • 详解易语言DLL以及API函数

    易语言 DLL 详细解释 使用易语言多媒体教程中的例子. .版本 2 //DLL文件 ,需要插入一个窗体.标签.按钮 .程序集 窗口程序集1 .子程序 _按钮1_被单击 窗口1.销毁 () .子程序 自创信息框, , 公开 .参数 标题, 文本型 .参数 内容, 文本型 载入 (窗口1, , 假) // 载入(),必须放在前面,放在后两句的后面则提示窗口无法载入 窗口1.标题 = 标题 窗口1.标签1.标题 = 内容 //编译为自创信息框.dll //当你想调用前面的dll时,必须先插入dll命

  • 详解C语言初阶之函数

    目录 1.main函数 2.自定义函数 2.1  函数的的封装和面向过程的思维 3.函数的组成 3.1函数的命名法 3.2函数的返回值 3.2.1void类型 补充: 3.3形参与实参 总结 1.main函数 第一个函数是我们的main函数,它无处不在,main函数被称之为我们的入口函数,程序在运行时,从main函数进入,从main函数出来,main函数其实就是整个程序功能的集合,所有的功能必须被包含在main里面才可以被运行(预处理命令,宏定义,全局变量什么的当然要优先处理,再次不讨论这些).

  • 详解C++编程中用数组名作函数参数的方法

    C++数组的概念 概括地说:数组是有序数据的集合.要寻找一个数组中的某一个元素必须给出两个要素,即数组名和下标.数组名和下标惟一地标识一个数组中的一个元素. 数组是有类型属性的.同一数组中的每一个元素都必须属于同一数据类型.一个数组在内存中占一片连续的存储单元.如果有一个整型数组a,假设数组的起始地址为2000,则该数组在内存中的存储情况如图所示. 引入数组就不需要在程序中定义大量的变量,大大减少程序中变量的数量,使程序精炼,而且数组含义清楚,使用方便,明确地反映了数据间的联系.许多好的算法都与

随机推荐