字符函数 和 字符串函数
今天我打算介绍一些字符函数和字符串函数,有一些字符串函数我实现了模拟,但文章中没有放出来,如果需要的欢迎来到我的gitee里面拿取(在test.c11-23里面)
这是我的gitee:小汐 (lhysxx) - Gitee.com
字符函数
1. islower
判断是否是小写字母
跳转网站
islower - C++ Reference
注意事项:
- int islower(int c)
函数返回类型:int
这里返回的是 0 和 非0 的数(0代表输入的不是小写字母,非0代表输入的是小写字母)
函数参数类型:int
2. 参数c
可以输入的是字符(字符的本质也是数字)
要检查的字符会被强制转换为 int 或 EOF
3.头文件:
<ctype.h>
代码举例
#include<stdio.h> #include<ctype.h> int main() { printf("%d\n", islower('A')); printf("%d\n", islower('a')); return 0; }
打印结果:
2. isupper
判断是否是大写字母
跳转网站
isupper - C++ Reference
注意事项:
- int islower(int c)
函数返回类型:int
这里返回的是 0 和 非0 的数(0代表输入的不 是大写字母,非0代表输入的是大写字母)
函数参数类型:int
2. 参数c
可以输入的是字符(字符的本质也是数字)
要检查的字符会被强制转换为 int 或 EOF
3.头文件:
<ctype.h>
代码举例
#include<stdio.h> #include<ctype.h> int main() { printf("%d\n", isupper('A')); printf("%d\n", isupper('a')); return 0; }
运行结果:
3. isprint
判断是否是可打印字符(ASCLL码值在0~31之间是不可见的)
跳转网站
isprint - C++ Reference
注意事项:
- int isprint(int c)
函数返回类型:int
这里返回的是 0 和 非0 的数(0代表输入的不 是可见字符,非0代表输入的是可见字符)
函数参数类型:int
2. 参数c
可以输入的是字符(字符的本质也是数字)
要检查的字符会被强制转换为 int 或 EOF
3. 头文件:
<ctype.h>
代码举例
#include<stdio.h> #include<ctype.h> int main() { printf("%d\n", isprint('\0')); printf("%d\n", isprint('a')); return 0; }
运行结果:
4. isdigit
判断是否是’0‘ — ’9‘的字符
跳转网站
isdigit - C++ Reference
注意事项:
- int isdigit(int c)
函数返回类型:int
这里返回的是 0 和 非0 的数(0代表输入的不 是数字字符,非0代表输入的是数字字符)
函数参数类型:int
2.参数c
可以输入的是字符(字符的本质也是数字)
要检查的字符会被强制转换为 int 或 EOF
3.头文件:
<ctype.h>
代码举例
#include<stdio.h> #include<ctype.h> int main() { printf("%d\n", isdigit('0')); printf("%d\n", isdigit('a')); return 0; }
运行结果:
5. isspace
判断输入的是否是空白字符(包括' ',' \f'‘ \v ' \n ' , ' \r ', ' \t ')
跳转网站
isspace - C++ Reference
注意事项:
- int isspace(int c)
函数返回类型:int
这里返回的是 0 和 非0 的数(0代表输入的不 是空白字符,非0代表输入的是空白字符)
函数参数类型:int
2.参数c
可以输入的是字符(字符的本质也是数字)
要检查的字符会被强制转换为 int 或 EOF
3.头文件:
<ctype.h>
代码举例
#include<stdio.h> #include<ctype.h> int main() { printf("%d\n", isspace(' ')); printf("%d\n", isspace('a')); return 0; }
运行结果:
6. toupper
把小写字母变成大写字母
跳转网站
toupper - C++ Reference
注意事项:
- int toupper(int c)
函数的返回类型: int ,函数的参数类型: int
返回的是大写字母的ASCLL码值
2. 参数c
可以输入的是字符(字符的本质也是数字)3.头文件:
<ctype.h>
代码举例
#include<stdio.h> #include<ctype.h> int main() { printf("%d\n", toupper('a')); printf("%c\n", toupper('a')); return 0; }
运行结果:
7. tolower
把大写字母变成小写字母
跳转网站
tolower - C++ Reference
注意事项:
- int toupper(int c)
函数的返回类型: int ,函数的参数类型: int
返回的是小写字母的ASCLL码值
2. 参数c
可以输入的是字符(字符的本质也是数字)3. 头文件:
<ctype.h>
代码举例
#include<stdio.h> #include<ctype.h> int main() { printf("%d\n", tolower('A')); printf("%c\n", tolower('A')); return 0; }
运行结果:
字符串函数
1. strlen
计算字符串的长度
跳转网站
strlen - C++ Reference
注意事项:
- size_t strlen ( const char * str )
函数返回类型:size_t (字符串的长度不可能为负数)
返回的值就是字符串的长度
函数参数类型: const char *
这里说明地址所指向的内容是不可以更改的
2. 参数str:
传过来的是需要计算的字符串的首地址
3. 头文件:
<string.h>
代码举例
#include<stdio.h> #include<string.h> int main() { char ch[30] = "ancd"; printf("%d ", strlen(ch)); return 0; }
运行结果:
数组ch存放的元素的一定要包括'\0' ,否则可能造成越界访问
4. 实现原理:
拿到某一个地址后,向后找 '\0' ,直到找到为止才会停下来,记录 '\0' 之前的元素个数有多少个
2. strcpy
复制字符串的内容
跳转网站
strcpy - C++ Reference
注意事项:
- char * strcpy ( char * destination, const char * source )
函数返回类型 : char * ,参数类型:都是 char *
返回的地址是destination的地址
2. 参数destination 和 参数source
把source接收的地址所指向的内容复制到destination接收的地址所指向的内容
并且source接收的地址所指向的内容不可以被修改
3. 头文件
<string.h>
代码举例
#include<stdio.h> #include<string.h> int main() { char ch1[] = "abcdeff"; char ch2[] = "ab"; strcpy(ch1,ch2); printf("%s", ch1); return 0; }
4. 实现原理
将一个字符数组的内容拷贝到另一个字符数组的内容里面(包括'\0'),但是需要修改内容的字符数组的内存大小一定不能小于被拷贝字符数组的内存大小
3. strcmp
比较两个字符串的大小(比较的是对应的ASCLL码值)
跳转网站
strcmp - C++ Reference
注意事项:
- int strcmp ( const char * str1, const char * str2 )
函数返回类型:int , 函数参数类型:都是 const char *
函数返回的是(大于0,0,小于0的数)
[如果str1所指向的字符串大小大于str2接收的,返回大于0的数;如果str1所指向的字符串大小等于str2接收的,返回0,如果str1所指向的字符串大小小于str2接收的,返回小于0的数]
2. 参数str1 和 str2
传入的是两个需要比较的字符串的地址
3. 头文件:
<string.h>
代码举例
#include<stdio.h> #include<string.h> int main() { char ch1[] = "abcde"; char ch2[] = "abcdf"; printf("%d ", strcmp(ch1, ch2)); return 0; }
运行结果:
"abcd"这几个都是一样的,但是'e' 的ASCLL码值小于'f',则返回比0小的数
4. strcat
将一个字符串的内容衔接给到一个字符串内容的后面
跳转网站
strcat - C++ Reference
注意事项:
- char * strcat ( char * destination, const char * source )
函数返回类型:char * , 函数参数:都是 char *
返回的是被衔接的字符串的地址
2. 参数 destination 和 source
把 source 所指向的字符串的内容(包括'\0')衔接到 destination所指向的字符串的内容后面
并且 source 所指向的字符串的内容不可以被修改
3. 头文件
<string.h>
代码举例
#include<stdio.h> #include<string.h> int main() { char ch1[20] = "hello "; char ch2[] = "bit"; strcat(ch1, ch2); printf("%s\n", strcat(ch1, ch2)); printf("%s\n", ch1); return 0; }
运行结果:
4. 实现原理
找到需要被衔接的字符串的'\0'位置的地址处,并从这里开始,后面的内容全部改成需要被复制的字符串的内容(包括'\0'),并且被衔接的字符数组空间一定要大