字符函数和字符串函数

本文详细介绍了C语言中的字符函数(如islower,strlen等)、字符转换函数(tolower,toupper)以及字符串函数(如strcpy,strcat,strcmp等),展示了它们的格式、使用方法和示例,帮助读者掌握字符串处理的基本操作。
摘要由CSDN通过智能技术生成

目录

1. 字符函数

1.1 字符函数类型

1.2 字符函数格式

2. 字符转换函数

2.1 字符转换函数类型

2.2 字符转换函数的格式和使用

3. 字符串函数

3.1 strlen函数

3.1.1 strlen函数的格式

3.1.2.字符串函数的使用

3.1.3 字符串函数的模拟使用

3.1.3.1 计数器方法(创建临时变量)

3.1.3.2 指针-指针

3.1.3.3 递归方法(不创建临时变量)

3.2 strcpy函数

3.2.1 strcpy函数的格式和使用

​3.2.2 strcpy函数的模拟使用

3.3 strcat函数

3.3.1 strcat函数的格式和使用

3.3.1 strcat函数模拟使用

3.4 strcmp函数

3,4,1 strcmp函数的格式和使用

3.4.2 strcmp函数的模拟

3.5 strncpy函数的使用

3.6 strncat函数的使用

3.7 strncmp函数的使用

3.8 strstr函数

3.8.1 strstr函数的样式和使用

3.8.2 strstr函数模拟使用

3.9  strtok函数的使用

3.10 strerror的使用


1. 字符函数

字符函数要包括ctype.h头文件

1.1 字符函数类型

incentel : 任何控制字符

islower : 小写字母

isupper : 大写字母

isalpha : 小写字母或大写字母

isalnum : 字母或数字

isdigit : 十进制数字,

isxdigit : 十进制数字和十六进制数字,大小写字母

isspance : 任何空白字符:空格‘ ’,换行‘\n’,回车‘\r’,换页‘\f’,制表格‘\t’

ispunt : 标点符号,除数字和字母之外的空白字符

isgraph : 图形字符

isprint : 打印字符

1.2 字符函数格式

字符函数的格式和使用都是相似的

islower(参数)

判断参数部分是否是小写字母,如果是小写字母返回非零的数,不是则返回零

2. 字符转换函数

2.1 字符转换函数类型

1 tolower : 将大写字母换成小写字母

2 toupper  将小写字母换成大写字母

2.2 字符转换函数的格式和使用

int tolower ( int c ); 
int toupper ( int c );

3. 字符串函数

字符串函数使用必须包括库函数:#include<string.h>

3.1 strlen函数

计算字符串‘\0’之前的字符个数

3.1.1 strlen函数的格式

size_t strlen (const*char s)

注意事项:

size_t为无符号类型,返回的是非零的数

字符串以‘\0’为结尾,strlen计算的是‘\0’之前的字符个数

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

strlen函数用来计算字符串中字符的个数

3.1.2.字符串函数的使用

使用:

3.1.3 字符串函数的模拟使用

字符串函数的模拟使用有三种方法:计数器方法    指针- 指针     递归的方法

3.1.3.1 计数器方法(创建临时变量)

3.1.3.2 指针-指针

3.1.3.3 递归方法(不创建临时变量)

3.2 strcpy函数

将源字符串拷贝到目的空间

3.2.1 strcpy函数的格式和使用

  p1为拷贝内容的源地

  p2为拷贝内容的目的地

char*strcpy(char*p2,const chay* p1)

注意内容

源字符串以\0为结尾

源字符的\0也会被拷贝到目标空间

要有足够的空间来容纳被拷贝的内容

目标空间可修改

strcpy函数的使用

3.2.2 strcpy函数的模拟使用

3.3 strcat函数

将源目标字符串追加到目字符串

3.3.1 strcat函数的格式和使用

char* strcat(char*des,const char* str)

注意内容:

源字符串必须以 '\0' 结束

目标字符串中也得有 \0 ,否则追加不知哪里开始

目标空间要足够大,能容纳源字符串的内容

目标空间必须可修改

使用:将arr1的内容追加到arr2

3.3.1 strcat函数模拟使用

3.4 strcmp函数

对两个字符串比较大小

3,4,1 strcmp函数的格式和使用

int strcmp(const char* str1,const char* str2)

比较字符串相对位置字符的ASCII的值

第一个字符串(str1)大于第二个字(strt2)符串,返回大于0的数

第一个字符串(str1)等于第二个字(strt2)符串,返回等于0的数

第一个字符串(str1)小于第二个字(strt2)符串,返回小于于0的数

使用:3.4.2 strcmp函数的模拟

3.5 strncpy函数的使用

char* strncpy(char* des,const char* str,size_t num)

将源字符串(str)中的num个字符拷贝到目标空间(des)

如果num大于源字符串长度,拷贝完源字符后就拷贝0,直到num个;

3.6 strncat函数的使用

char* strncat(char* des,const char* str, size_t num)

将源字符串(str)中的num个字符追加到目标空间(des)的末尾,最后再加上\0

如果num大于源字符串长度,追加完源字符后的\0结束了

使用:

3.7 strncmp函数的使用

int char* strncmp(const char* str1,const char* str2,size_t num)

比较两个字符串的前num个字符的大小,相等就比较下一个,最多比较num个

使用:

3.8 strstr函数

函数返回字符串str2在字符串str1中第一次出现的地址,即打印从str2中str1首字符后的字符内容(包括首字符)

3.8.1 strstr函数的样式和使用

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

函数返回字符串str2在字符串str1中第一次出现的位置

字符串的比较匹配不包含 \0 字符,以 \0 作为结束标志

使用:

3.8.2 strstr函数模拟使用

#include<stdio.h>
#include<string.h>
#include<assert.h>
char* my_strstr(char* str1, char* str2)
{
	char* s1 = NULL;
	char* s2 = NULL;
	char* cur = str1;
	while (*cur)
	{
		s1 = cur;
		s2 = str2;
		while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2)
		{
			s1++;
			s2++;
		}
		if (*s2 == '\0')
		{
			return cur;
		}
		cur++;
	}
	return NULL;
}
int main()
{
	char str1[] = "agggdigdg";
	char str2[] = "gd";
	char* ret = my_strstr(str1, str2);
	if (ret == NULL)
		printf("不存在");
	else
	printf("%s", ret);
	return 0;
}

3.9  strtok函数的使用

char* strtok(char* str1,const char* str2)

注意:

str2参数指向一个包含一个或多个分隔符的字符串

str1参数指向一个包含以str2中的分隔符为分割的字符串

strtok函数找到str中的下一个标记,并将以 \0 结尾,返回这个标记的地址

 strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串 中的位置

strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记

 如果字符串中不存在更多的标记,则返回 NULL指针

使用

#include <stdio.h>
#include <string.h>
int main()
{
	char arr[] = "12&108.6.11*6yy";
	const char* sep = "&.*";
	char* str = NULL;
	for (str = strtok(arr, sep); str != NULL; str = strtok(NULL, sep))
	{
		printf("%s\n", str);
	}
	return 0;
}

3.10 strerror的使用

要包含errno.h头文件

我们在使用标准库中的函数的时候发生错误,就会将对应的错误码,存放在errno中,而一个错误码的数字是整数很难理解是什么意思,所以每一个错误码都是有对应的错误信息的。strerror函数就可以将错误对应的错误信息字符串的地址返回

char* strerror(int errrnum)

strerror 函数可以返回参数部分错误码对应的错误信息的字符串地址

  • 29
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值