C语言——字符函数和字符串函数

1.字符分类函数

C语言中有⼀系列的函数是专⻔做字符分类的,也就是⼀个字符是属于什么类型的字符的。
这些函数的使用都需要包含⼀个头⽂件是 ctype.h
在这里插入图片描述
举个栗子:
判断是否小写字母
通过返回值来说明是否是⼩写字⺟,如果是⼩写字⺟就返回⾮0的整数,如果不是⼩写字⺟,则返回0。


	char a = 'A';
	printf("%d\n", islower(a));  // 0

2.字符转换函数

包含头文件 #include <ctype.h>

int tolower ( int c );  //将参数传进去的⼤写字⺟转⼩写 
int toupper ( int c );  //将参数传进去的⼩写字⺟转⼤写

3.strlen的使用

判断字符串的长度,注意所判断的字符串的长度必须 ‘\0’ 结尾。因为这个函数的实现就是从头一直找,指导找到 '\0’就停止了。

包含头文件 #include <string.h>

size_t strlen ( const char * str );  //size_t就是无符号整数

4.strcpy的使用

字符串拷贝。 把src字符串拷贝到dest字符串中。

 1.源字符串必须以 '\0' 结束。
 2.会将源字符串中的 '\0' 拷⻉到⽬标空间。
 3.⽬标空间必须⾜够⼤,以确保能存放源字符串。
 4.⽬标空间必须可修改。
 dest: destination  
 src: source
 
 char* strcpy(char * dest, const char * src );

5.strcat的使用

字符串追加。 把src字符串追加到dest字符串中。

1.源字符串必须以 '\0' 结束。
2.会将源字符串中的 '\0' 拷⻉到⽬标空间。
3.⽬标空间必须⾜够⼤,以确保能存放源字符串。
4.⽬标空间必须可修改。
dest: destination  
src: source
 
char* strcat(char * dest, const char * src );

6.strcmp的使用

字符串比较,比较字符串s1和字符串s2两个字符串中对应位置上字符ASCII码值的⼤⼩。

字符串s1 > 字符串s2,则返回 > 0的数字
字符串s1 == 字符串s2,则返回 0
字符串s1 < 字符串s2,则返回 < 0的数字

int my_strcmp (const char * s1, const char * s2);

7.strncpy的使用

比strcpy 中间多了个字母,函数的参数也多了一个
从src字符串拷贝 num 个字符到dest

如果源字符串的⻓度⼩于num,则拷⻉完源字符串之后,在⽬标的后边追加'\0',直到num个。
否则,指定多少个就拷贝多少个。

char * strncpy ( char * dest, const char * src, size_t num );

8.strncat的使用

字符串追加。 从src字符串中追加 num个 到dest字符串中。

追加完后会主动在dest字符串后增加一个 '\0'。
如果src 指向的字符串的⻓度⼩于num的时候,只会将字符串中到 '\0' 的内容追
加到dest指向的字符串末尾。


char * strncat ( char * dest, const char * src, size_t num );

9.strncmp的使用

字符串比较,比较字符串s1和字符串s2两个字符串中前 num 个字符的大小。

字符串s1 > 字符串s2,则返回 > 0的数字
字符串s1 == 字符串s2,则返回 0
字符串s1 < 字符串s2,则返回 < 0的数字

int strncmp ( const char * s1, const char * s2, size_t num );

10.strstr的使用

返回s2 字符串在s1字符串第一次出现的位置指针

char * strstr ( const char * s1, const char * s2);

如果想知道s2在s1第一次出现的位置下标可以这样写:

	char s1[] = "aaaaayesaaaaaa";
	char s2[] = "yes";
	char* start = strstr(s1, s2);
	printf("%d\n", start - s1);  //5

11.strtok函数的使用

用sep 指向的字符来分割 str

如果str!= null,则strtok返回第一个被分割的字段
如果str==null,则strtok,则在上一个被分割的字段之后继续分割。
如果str中不存在sep,则返回null
sep:sperate

char * strtok ( char * str, const char * sep);

如果想要分割一个IP地址可以:

	char arr[] = "192.168.0.1";
	char* sep = ".";
	char* str = NULL;
	for (str = strtok(arr, sep); str != NULL; str = strtok(NULL, sep))
	{
		printf("%s  ", str);
	}
	//输出 192  168  0  1

12.strerror函数的使用

打印错误码信息

包含 #include<errno.h>
strerror函数可以把参数部分错误码对应的错误信息的字符串地址返回来。

char * strerror ( int errnum );

for (int i = 0; i <= 10; i++) {
		printf("%d:  %s\n",i ,strerror(i));
	}
	
0:  No error
1:  Operation not permitted
2:  No such file or directory
3:  No such process
4:  Interrupted function call
5:  Input/output error
6:  No such device or address
7:  Arg list too long
8:  Exec format error
9:  Bad file descriptor
10:  No child processes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是无敌小恐龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值