C语言字符串函数入门

 更新时间:2022年01月03日 15:18:51   作者:build小春宝  
这篇文章主要为大家介绍了C语言字符串函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

实现字符串库函数功能

有些时候我们可能会被限制无法使用库函数,这个时候我们需要编写自己的库函数。但了解了字符串库函数的功能之后,想要实现并不困难,今天我们用数组和循环来简单实现几个字符串库函数的功能。

1.strlen函数

strlen函数使用来求字符串长度的,遇到\0就会停止,并返回字符串的长度,接下来根据这个特性来编写一下我们自己的strlen

int my_strlen(char string[]) {
	int count= 0;
	while (string[count] != NULL) {        
		count++;
	}
	return count;
}//也可以将while的判断条件改为string[count]

有些小伙伴应该知道递归的实现,但是这里涉及了指针的内容,我就不教大家实现了

2.strcmp函数

strcmp字符串比较函数,对两个字符串进行比较,相当返回0,前一个字符串大于后一个字符串会返回大于0的数,小于则返回小于0的数,至于具体返回多少,则需要看编译器。

在实现strcmp功能之前,我们需要了解它的机制,strcmp是一个字符一个字符的比较ASCII值的

int  my_strcmp(char string1[], char string2[]) {
	int i = 0;
	   //当两个字符串都没有达到末端时,继续比较
	while ((string1[i] == string2[i]) && string1[i] && string2[i])
		i++;
	return string1[i] - string2[i]; //当两个字符串指向的字符不一样或者到达终点时返回差值
}

一个简单的while循环就能达到目的

3.strcpy函数

字符串拷贝函数,将后一个字符串拷贝到前一个字符串中,我们需要保证目的地足够大

void my_strcpy(char string1[50], char string2[]) {
	int i = 0;
	while (string1[i++] = string2[i++]);
}
//这里利用了赋值表达式的特性,直接进行赋值,当string[i]为\0时赋值完循环自动停止
//当然这个程序并不是完美的,根据strcpy的返回值我们还可以这样修改
char* my_strcpy(char string1[50], char string2[]) {
		int i = 0;
		while (string1[i++] = string2[i++]);
		return string1;
}//返回目的地的起始地址

4.strcat函数

strcat字符串追加,在一个字符串之后追加一个新的字符串,如果以strcpy的角度理解就是以第一个字符串的\0位置为起始地址进行字符串拷贝,那么接下来就很简单了

char* my_strcat(char string1[50], char string2[]) {
	int i = -1;
	while (string1[++i]);//循环停止时i指向\0
	int j = 0;
	while (string1[i++] = string2[j++]); //与strcpy同理
	return string1;
}

5.strupr函数

strupr字符串大写函数,将所有字符串中的小写字母都变成大写,我们只需要根据ASCII值就可以简单实现

char*my_strupr(char string[]) {
	int i = 0;
	while (string[i]) {       //当string[i]指向\0时循环停止
		if (string[i] >= 'a' && string[i] <= 'z')
		string[i] -= 32;
		i++;
	}
	return string;
}

6.strlwr函数

和strupr对应,这是字符串小写函数,把大写转成小写,只需要对上面的代码简单一改就可以

char*my_strlwr(char string[]) {
	int i = 0;
	while (string[i]) {       //当string[i]指向\0时循环停止
		if (string[i] >= 'A' && string[i] <= 'Z')
		string[i] += 32;
		i++;
	}
	return string;
}

总结

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

相关文章

  • c++中std::hash以及万能hash的使用方式

    c++中std::hash以及万能hash的使用方式

    这篇文章主要介绍了c++中std::hash以及万能hash的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • C语言实现文件内容按行随机排列的算法示例

    C语言实现文件内容按行随机排列的算法示例

    这篇文章主要介绍了C语言实现文件内容按行随机排列的算法,涉及C语言字符串、数组遍历与随机数相关算法实现技巧,需要的朋友可以参考下
    2017-09-09
  • 带你分分钟玩转C语言指针

    带你分分钟玩转C语言指针

    c语言指针其实是一个整形变量,与其它数据不同的是,它的作用是用来存储其它变量的地址,下面这篇文章主要给大家介绍了关于C语言指针的相关资料,需要的朋友可以参考下
    2022-06-06
  • C++虚函数表与类的内存分布深入分析理解

    C++虚函数表与类的内存分布深入分析理解

    对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。本文就将详细讲讲虚函数表的原理与使用,需要的可以参考一下
    2022-08-08
  • 一文带你了解C语言中的0长度数组(可变数组/柔性数组)

    一文带你了解C语言中的0长度数组(可变数组/柔性数组)

    众所周知, GNU/GCC 在标准的 C/C++ 基础上做了有实用性的扩展, 零长度数组(Arrays of Length Zero) 就是其中一个知名的扩展,本文就来聊聊零长度数组的相关知识吧
    2023-03-03
  • QT5连接MySQL实现增删改查

    QT5连接MySQL实现增删改查

    这篇文章主要为大家详细介绍了QT5如何连接MySQL实现增删改查功能,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的可以了解一下
    2022-12-12
  • C语言详细分析贪心策略中最小生成树的Prime算法设计与实现

    C语言详细分析贪心策略中最小生成树的Prime算法设计与实现

    最小生成树的问题还是比较热门的,最经典的莫过于Prime算法和Kruskal算法了,这篇博文我会详细讲解Prime算法的设计思想与具体代码的实现,不要求数据结构学的有多好,只要跟着我的思路来,一步一步的分析,调试,终能成就自己,那就让我们开始吧
    2022-05-05
  • C++构造函数详解

    C++构造函数详解

    这篇文章主要介绍了C++构造函数详解,上一篇文章我们介绍了定义了类,在使用之前,往往还需要对类进行初始化。这篇介绍的就是对类进行初始化的方法,需要的朋友可以参考一下
    2022-01-01
  • 最新VScode C/C++ 环境配置的详细教程

    最新VScode C/C++ 环境配置的详细教程

    这篇文章主要介绍了最新VScode C/C++ 环境配置的详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • C语言复杂链表的复制实例详解

    C语言复杂链表的复制实例详解

    这篇文章主要为大家详细介绍了C语言复杂链表的复制,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02

最新评论