首页 > 其他分享 >字符函数和字符串函数(一)

字符函数和字符串函数(一)

时间:2024-03-16 21:59:33浏览次数:18  
标签:字符 函数 dest char ++ int 字符串

一.字符分类函数

判断一个字符属于什么类型的字符,需要包含头文件<ctype.h>
如果是是与判断类型相同,返回非0整数,如果不用就返回0

下面是函数:

iscntrl //任何控制字符
isspace //空白字符:空格 ' ',换页'\f',换行'\n',回车'\r',制表符'\t',垂直制表符'\v'
isdigit //十进制数字0—10
isxdigit //十六进制数字
islower //小写字母
isupper //大写字母
isalpha //字母
isalnum //字母或者数字
ispunct //标点符号,任何不属于数字或字母的图形字符
isgraph //任何图形字符
isprint //任何可以打印的字符,包括图形字符和空白字符

上面已经很明确了,这里不做介绍

二.字符转换函数

可以转换大小写

int tolower(int c)  //大写转成小写
int toupper(int c)	//小写转成大写

三.strlen及其模拟实现

size_t strlen(const void * str)

1.字符串以 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前⾯出现的字符个数(不包含 '\0' )。

2.参数指向的字符串必须要以 '\0' 结束。

3.注意函数的返回值为size_t,是无符号的。

下面是函数的模拟实现:

//模拟实现
int my_strlen(const char* str)
{
	int count = 0;
	assert(str);
	while (*str)
	{
		count++;
		str++;
	}
	return count;
}

四.strcpy及其模拟实现

char* strcpy(char* destination, const char* source)

1.源字符串必须以 '\0' 结束。
2.会将源字符串中的 '\0' 拷贝到目标空间。
3.目标空间必须足够大,以确保能存放源字符串。
4.目标空间必须可修改。

下面是函数的模拟实现:

//模拟实现
char* my_strcpy(char* dest, const char* sour)
{
	char* res = dest;
	while ((*dest++ = *sour++))
	{
		;
	}
	return res;
}


五.strcat及其模拟实现

1.源字符串必须以 '\0' 结束。
2.目标字符串中也得有 \0 ,否则没办法知道追加从哪里开始。
3.目标空间必须有足够的大,能容纳下源字符串的内容。
4.目标空间必须可修改。
下面是函数的模拟实现:

//模拟实现
char* my_strcat(char* dest, const char* sour)
{
	char* res = dest;
	while (*dest)
	{
		dest++;
	}
	while ((*dest++ = *sour++))
	{
		;
	}
	return res;
}

六.strcmp及其模拟实现

比较两个字符串中对应位置上字符ASCII码值的大小。1.第⼀个字符串大于第⼆个字符串,则返回大于0的数字。2.第⼀个字符串等于第⼆个字符串,则返回0。3.如果第⼀个字符串小于第⼆个字符串,则返回小于0的数字。

下面是函数的模拟实现:

​
//模拟实现
int my_strcmp(const char* str1, const char* str2)
{
	int ret = 0;
	while (*str1 == *str2)
	{
		if (*str1 == '\0')
			return 0;
		str1++;
		str2++;
	}
	return *str1 - *str2;
}

​

标签:字符,函数,dest,char,++,int,字符串
From: https://blog.csdn.net/lllsure/article/details/136770732

相关文章

  • 第7讲:数组和函数实践:扫雷游戏
    第7讲:数组和函数实践:扫雷游戏1.扫雷游戏分析和设计1.1扫雷游戏的功能说明1.2游戏的分析和设计1.2.1数据结构的分析1.2.2文件结构设计2.扫雷游戏的代码实现3.扫雷游戏的扩展1.扫雷游戏分析和设计1.1扫雷游戏的功能说明•使用控制台实现经典的扫雷游戏•......
  • 1.3函数提高
    1、函数默认参数在C++语法中,函数的形参列表中的形参是可以有默认值的语法:返回值类型函数名(参数=默认值){}如:voidfunc(inta=10){}注意1:如果某个位置参数有默认值,那么这个位置往后,从左向右,必须都要有默认值!如:voidfunc(inta,intb=10,intc){}这是错误的,如果b......
  • STM32第九节(中级篇):RCC(第二节)——讲解系统时钟配置函数SetSysClockTo72
    目录前言STM32第九节(中级篇):RCC(第二节)——讲解系统时钟配置函数SetSysClockTo72代码内容位置及检索分析代码 代码展示时钟控制使能闪存控制寄存器配置AHP,APB1,APB2的总线时钟配置锁相环时钟 超频操作小结前言    上节课我们讲了理论部分,那么我们这节课......
  • Dictionary计算字符出现的次数
    stringstr="两只老虎,两只老虎,跑得快,跑得快。一只没有耳朵,一只没有尾巴,真奇怪,真奇怪。";Dictionary<char,int>dic=newDictionary<char,int>();for(inti=0;i<str.Length;i++){if(!dic.ContainsKey(str[i])......
  • C语言基础-2、字符类型
    一、字符类型char是一种整数,也是一种特殊的类型:字符。这是因为:用单引号表示的字符字面量:'a','1'''也是一个字符printf和scanf里用%c来输入输出字符1、字符的输入输出#include<stdio.h>intmain(){ charc,d; c=1; d='1'; if(c==d){ printf("相等\n"); }......
  • JavaScript操作函数
    JavaScript操作函数通过标签事件触发函数(js),在函数中又返回来对网页中的标签操作在js中如何能够操作网页中的标签在js语言中,认为每一个标签就是一个独一无二的对象,在js语言中可以获得网页中的标签,这样就可以在js中对标签的属性,内容,样式及逆行操作要操作哪个标签,首先......
  • Python疑难杂症(13)---Python的几个比较难理解的内置函数,包括range、zip、map、lambda
    1、range()range(start=0, stop[, step=1])构造器的参数必须为整数(可以是内置的 int 或任何实现了 __index__() 特殊方法的对象)。生成一个start到stop的数组,左闭右开, 类型表示不可变的数字序列,通常用于在 for 循环中循环指定的次数。list(range(6))[0,1,2,3......
  • 指针数组、数组指针、函数指针、指针函数
    数组指针:是指向数组的指针,它还是一个指针,只不过指向数组而已行指针定义形式:int(*p)[10]一定要加(),因为[]优先级高于*,所以必须要(*p)指一行,这里10为列的元素个数例1:二维数组数值为1-12,用行指针定义输出8例2:用行指针传参,2*3数组,输出第二行指针数组:实际是一个数组,长度是......
  • qsort函数[3]---冒泡排序与qsort函数的结合
    冒泡排序与qsort函数的结合首先给大家回顾一下冒泡排序voidbubble_sort(intarr[],intsz){ //确定趟数 inti=0; for(i=0;i<sz-1;i++) { //每趟进行两两互相比较 intj=0; for(j=0;j<sz-i-1;j++) { if(arr[j]<arr[j+1]) ......
  • 函数指针数组(转移表)
    函数指针数组,首先是一个数组,其次其中存储的数据类型是函数指针,所以我们可以通过使用函数指针数组来调用不同的函数。接下来为大家展示他的基本使用方法(模拟计算器)函数指针数组结构   int(*arr[])(intx,inty)={NULL,Add,Sub,Mul,Div};其中NULL,Add,Sub,Mul,Div......