前言:
本文主要以最简单的有代表性的案例来体现函数的功能,对于这些函数更灵活的运用和技巧还要靠大家勤动手挖掘。
文章较长点击目录即可跳转到目标函数,关于函数原型如果有疑惑请看函数语法更好理解。
说明:
以下的函数使用时需要加上头文件
# include "stdio.h"
#include "string.h"
# include "ctype.h"
文中的
- arry均表示数组
- char表示字符
- srting表示字符串(包括字符char)
- num表示数值
- strlen_1表示字符串string_1的长度
- strlen_2表示字符串string_2的长度
目录
🌟字符串操作
🔸strcpy()
常规情况:
函数功能:复制字符串
语法:strcpy(string_1, string_2)
函数原型:char * strcpy(char destination[], const char source[])
表示(记忆):string copy
解释说明:将string_2复制到string_1(string_2为空或string_2的长度要大于string_1)
✏实例:
#include <stdio.h>
#include <string.h>
int main(void)
{
char string_2[] = "Hello world";
char string_1[20];
strcpy(string_1, string_2);
printf("string_2 = %s\n", string_2);
printf("string_1 = %s\n", string_1);
return 0;
}
输出:
非常规情况:
如果string_2的不为空且长度小于string_1,那么string_1变成string_2,string_1的字符从前面开始,删掉strlen_2个字符
✏实例:
#include <stdio.h>
#include <string.h>
int main(void)
{
char string_2[] = "Hello world";
char string_1[] = "ppppp";
strcpy(string_1, string_2);
printf("string_2 = %s\n", string_2);
printf("string_1 = %s\n", string_1);
return 0;
}
输出:
🔸strncpy()
常规情况:
函数功能:复制指定长度字符串
语法:strcpy(string_1, string_2, num)
函数原型:char * strncpy(char destination[], const char source[], int numchars
表示(记忆):string n copy
解释说明:将string_2中的前num个字符复制后赋给string_1的前num项
✏实例:
#include <stdio.h>
#include <string.h>
int main(void)
{
char string_1[] = "Hello world";
char string_2[] = "ppkkgg";
strncpy(string_1, string_2, 2);
printf("string_1 = %s\n", string_1);
printf("string_2 = %s\n", string_2);
return 0;
}
非常规情况:
当num的值超过string_1的等于长度时,strncpy ()相当于strcpy()
当num的值超过string_1的大于长度时,运行的时候会导致缓冲区溢出的问题(不同软件的处理结果不同,下面以CLion为例)
✏实例:
#include <stdio.h>
#include <string.h>
int main(void)
{
char string_1[] = "Hello world";
char string_2[] = "ppppppppppppp";
strncpy(string_1, string_2, 12);
printf("string_1 = %s\n", string_1);
printf("string_2 = %s\n", string_2);
return 0;
}
输出:
🔸strcat()
常规情况:
函数功能:附加(连接)字符串
语法:strcat(string_1, string_2, num)
函数原型:char *strcat(char *strDest, const char *strScr)
表示(记忆):string connect add to
解释说明:将string_2附加到string_1末尾
✏实例:
#include <stdio.h>
#include <string.h>
int main(void)
{
char string_1[] = "Hello world";
char string_2[] = "pppppppp";
strcat(string_1, string_2);
printf("string_1 = %s\n", string_1);
printf("string_2 = %s\n", string_2);
return 0;
}
输出:
🔸strncat()
常规情况:
函数功能:附加(连接)前n个字符
语法:strncat(string_1, string_2, num)
函数原型:strncat(char target[], const char source[], int numchars)
表示(记忆):string n connect add to
解释说明:将string_2中的前num个字符附加到string_1后
✏实例:
#include <stdio.h>
#include <string.h>
int main(void)
{
char string_1[12] = "Hello world";
char string_2[] = "pppppppp";
strncat(string_1, string_2, 3);
printf("string_1 = %s\n", string_1);
printf("string_2 = %s\n", string_2);
return 0;
}
输出:
非常规情况:
一般来说string_1的长度要足够长来容纳附加的字符,但是我在CLion和visualC++运行时即即使初始化string_1时的字符长度小于附加后的字符串长度也不会报错
#include <stdio.h>
#include <string.h>
int main(void)
{
char string_1[12] = "Hello world";
char string_2[] = "pppppppp";
strncat(string_1, string_2, 8);
printf("string_1 = %s\n", string_1);
printf("string_2 = %s\n", string_2);
return 0;
}
输出:
🔸strlen()
常规情况:
函数功能:获取字符串长度即返回的是在字符串中’\0’前面出现的字符的个数
语法:strlen(string)
函数原型:strlen( const char string[] )
表示(记忆):string length
解释说明:获取string的长度
✏实例:
#include <stdio.h>
#include <string.h>
int main(void)
{
char string[] = "12345";
printf("string_len = %d\n", strlen(string));
return 0;
}
输出:
🔸strcmp
常规情况:
函数功能:比较两个字符串的“大小”
语法:strcmp(string_1,string_2)
函数原型:strcmp(const char firststring[], const char secondstring)
表示(记忆):string compare(比较)
解释说明:比较两个字符串的“大小”
- 自左向右逐个按照ASCII值进行比较,直到出现不同的字符或遇’\0’为止。
- 如果返回值 < 0,则表示 string_1 小于 sering_2。
- 如果返回值 > 0,则表示 string_1 大于 string_2。
- 如果返回值 = 0,则表示 string_1 等于 string_2。
✏实例:
#include <stdio.h>
#include <string.h>
int main(void)
{
char string_1[] = "abz";
char string_2[] = "ac";
printf("strcmp(string_1, string_2):%d\n", strcmp(string_1, string_2));
printf("strcmp(string_2, string_1):%d\n", strcmp(string_2, string_1));
printf("strcmp(string_1, string_1):%d\n", strcmp(string_1, string_1));
return 0;
}
输出:
string_1 < string_2输出-1
string_2 > string_1输出1,
string_1 = string_1,输出0
🔸strcasecmp()
常规情况:
函数功能:strcasecmp函数比较string_1和stirng_2的“大小”,不区分大小写。
语法:strcasecmp(string_1, string_2)
函数原型:strcasecmp(const char* sz1, const char* sz2)
表示(记忆):string case compare
解释说明:
比较两个字符串的“大小”,不区分大小写。
- 自左向右逐个按照ASCII值进行比较,直到出现不同的字符或遇’\0’为止。
- 如果返回值 < 0,则表示 string_1 小于 sering_2。
- 如果返回值 > 0,则表示 string_1 大于 string_2。
- 如果返回值 = 0,则表示 string_1 等于 string_2。
✏实例:
#include <stdio.h>
#include <string.h>
int main(void)
{
char string_1[] = "abz";
char string_2[] = "Ac";
char string_3[] = "ac";
printf("strcasecmp(string_1, string_2):%d\n", strcasecmp(string_1, string_2));
printf("strcasecmp(string_2, string_1):%d\n", strcasecmp(string_2, string_1));
printf("strcasecmp(string_2, string_3):%d\n", strcasecmp(string_2, string_3));
return 0;
}
输出:
string_1 < string_2输出-1
string_2 > string_1输出1,
string_2 = string_3,输出0 (不区分大小写,所以相等)
🔸strncmp()
常规情况:
函数功能:strcasecmp函数比较string_1和stirng_2前n个字符的“大小”,不区分大小写。
语法:strncmp(string_1, sreing_2, num)
函数原型:int strcmp(const char *cs, const char *ct)
表示(记忆):string n compare
解释说明:strcasecmp函数比较string_1和stirng_2前n个字符的“大小”,不区分大小写。
- 自左向右逐个按照ASCII值进行比较,直到出现不同的字符或遇’\0’为止。
- 如果返回值 < 0,则表示 string_1 小于 sering_2。
- 如果返回值 > 0,则表示 string_1 大于 string_2。
- 如果返回值 = 0,则表示 string_1 等于 string_2。
✏实例:
#include <stdio.h>
#include <string.h>
int main(void)
{
char string_1[] = "abzcd";
char string_2[] = "Acbd";
char string_3[] = "acbD";
printf("strncasecmp(string_1, string_2):%d\n", strncasecmp(string_1, string_2, 2));
printf("strncasecmp(string_2, string_1):%d\n", strncasecmp(string_2, string_1, 2));
printf("strncasecmp(string_2, string_3):%d\n", strncasecmp(string_2, string_3, 2));
return 0;
}
输出:
🔸strchr()
常规情况:
函数功能:查找字符出中指定的字符
语法:strchr(string,target)
函数原型:extern char *strchr(char *str,char character)
表示(记忆):string char
解释说明:在字符串string中寻找目标字符(一个字符)target第一次出现的位置,并返回其位置(地址指针),若失败则返回NULL。
target也可以理解为string_2.
✏实例:
#include <stdio.h>
#include <string.h>
int main(void)
{
char string[] = "abcdABC";
char *findchar;
findchar = strchr(string, 'A');
printf("findchar = %s\n", findchar);
return 0;
}
输出:
非常规情况:
当传入的目标字符不是单个字符时,取传入目标字符最后一个字符作为目标字符。
✏实例:
#include <stdio.h>
#include <string.h>
int main(void)
{
char string[] = "abcdABC";
char *findchar;
findchar = strchr(string, 'bc');
printf("findchar = %s\n", findchar);
return 0;
}
输出:
传入目标字符bc,取c为目标字符
🔸strrchr()
函数功能:反向查找字符出中指定的字符
语法:strrchr(string,target)
函数原型:extern char * strrchr (const char *s, int c)
表示(记忆):string reverse(反向)char
解释说明:在字符串string中反向寻找目标字符(一个字符)target第一次出现的位置,并返回其位置(地址指针),若失败则返回NULL。
✏实例:
#include <stdio.h>
#include <string.h>
int main(void)
{
char string[] = "abAcdABC";
char *findchar_1, *findchar_2, *findchar_3;
findchar_1 = strchr(string, 'A'); // 注意这是strchr函数
findchar_2 = strrchr(string, 'A');
findchar_3 = strchr(string, 'O');
printf("findchar_1 = %s\n", findchar_1);
printf("findchar_2 = %s\n", findchar_2);
printf("findchar_3 = %s\n", findchar_3);
return 0;
}
输出:
🔸strstr()
函数功能:查找找到子串在一个字符串中第一次出现的位置
语法:strstr(string,target)
函数原型:char *strstr(const char *haystack, const char *needle)
表示(记忆):string str
解释说明:在字符串string中寻找目标子串(多个字符)target第一次出现的位置,并返回其位置(地址指针),若失败则返回NULL。
✏实例:
#include <stdio.h>
#include <string.h>
int main(void) {
char string[] = "abAcdABC";
char *findchar_1, *findchar_2, *findchar_3;
findchar_1 = strstr(string, "bAc");
findchar_2 = strstr(string, "AB");
findchar_3 = strstr(string, "O");
printf("findchar_1 = %s\n", findchar_1);
printf("findchar_2 = %s\n", findchar_2);
printf("findchar_3 = %s\n", findchar_3);
return 0;
}
输出:
值得注意的是: 在传入目标字串时要用双引号(strstr(string, “AB”)),或者使用变量 findchar = “AB”,strstr(string, findchar)。使用单引号(strstr(string, ‘AB’))会报错。
当传入的目标字串长度超过原字符串时返回NULL。
🔸strpbrk()
函数功能:以⽬标字符串的所有字符作为集合target,在当前字符串查找该集合的任⼀元素
语法:strpbrk(string,target)
函数原:extern char *strpbrk(char *str1, char *str2)
表示(记忆):string pointer break
解释说明:在字符串string中寻找与集合target匹配的第一个元素,并返回第一个匹配到的string字符和后续字符,若失败则返回NULL。
✏实例:
#include <stdio.h>
#include <string.h>
int main(void) {
char string[] = "Hello world";
char *findchar_1, *findchar_2, *findchar_3;
findchar_1 = strpbrk(string, "ett");
findchar_2 = strpbrk(string, "lfg");
findchar_3 = strpbrk(string, "fg");
printf("findchar_1 = %s\n", findchar_1);
printf("findchar_2 = %s\n", findchar_2);
printf("findchar_3 = %s\n", findchar_3);
return 0;
}
输出:
我们从输出可以知道,当查找集合中 的元素有多个与string中字符匹配时,从左到右取第一个匹配到的字符
🔸strspn()
函数功能:以⽬标字符串的所有字符作为集合,在当前字符串开头查找集合中含有的字符,返回连续字符的长度
语法:strspn(string,target)
函数原型:strspn(char const *str, char const *grouo)
表示(记忆):string span(范围)
解释说明:以⽬标字符串target的所有字符作为集合,在字符串string开头查找集合中含有的字符,返回连续字符的长度。未找到匹配元素则返回0.
✏实例:
#include <stdio.h>
#include <string.h>
int main(void) {
char string[] = "Hello world.I love C,Python.";
int findchar_1, findchar_2, findchar_3;
findchar_1 = strspn(string, "Hef");
findchar_2 = strspn(string, "Hetyl ow,");
findchar_3 = strspn(string, "fg");
printf("findchar_1 = %d\n", findchar_1);
printf("findchar_2 = %d\n", findchar_2);
printf("findchar_3 = %d\n", findchar_3);
return 0;
}
输出:
这里的2表示字符串:“He”的长度
8表示字符串 :“Hello wo”的长度(空格也算是一个字符)
0表示没有在string中找到与target中所有字符匹配的字符
🔸strcspn()
函数功能:以⽬标字符串的所有字符作为集合,在当前字符串查找属于该集合的任⼀元素的第一匹配字符索引
语法:strcspn(string_1,string_2)
函数原型:extern int strcspn(char *str1,char *str2)
表示(记忆):string character span
解释说明:从左到右在字符串string_1中搜寻与string_2中字符相同的字符,并返回索引最小的字符的索引(下标)。
✏实例:
#include <stdio.h>
#include <string.h>
int main(void) {
char string[] = "Hello world.I love C,Python.";
int findchar_1, findchar_2, findchar_3;
findchar_1 = strcspn(string, "ef");
findchar_2 = strcspn(string, "zwhol,");
findchar_3 = strcspn(string, "zm");
printf("findchar_1 = %d\n", findchar_1);
printf("findchar_2 = %d\n", findchar_2);
printf("findchar_3 = %d\n", findchar_3);
printf("string_len = %d", strlen(string)); // 获取string长度
// 空格和标点符号都算一个字符
return 0;
}
输出:
对于findchar_1,“ef”和string共有的只有“e”,所以返回“e”在string中的下标1
对于findchar_2,“zwhol ”和sreing共有的有“w”,“h”,“o”,“l”,其中在string中下标最小的字符为“l”,所以返回“l”的坐标2
对于findchar_3,“zm”和string没有共有的元素,所以strcspn返回string的字符串长度
🌟字符串到数值类型的转换
🔹strtod()
函数功能:从字符串 string 中转换 double 类型数值,并将后续的字符串指针存储到 address 指向的 char* 类型存储。
语法:strtod(string,&address)
函数原型:double strtod(const char *nptr, char **endptr)
表示(记忆):string to digital(数值)
解释说明:
strtod()会遍历 string 字符串,自动跳过空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。
若string不为NULL,则会将遇到不合条件而终止的string中的字符指针由address传回。其中参数string字符串可包含正负号、小数点或E(e)(科学计数法)来表示指数部分。
✏实例1:
int main() {
char *address;
char string_1[] = "123.456";
char string_2[] = "1234.56Hello";
char string_3[] = "-123.56e4";
char string_4[] = "123a4.56Hello";
printf("string_1 = %lf\n", strtod(string_1, NULL));
printf("string_2 = %lf\n", strtod(string_2, &address));
printf("address = %s\n", address);
printf("string_3 = %lf\n", strtod(string_3, NULL));
printf("string_2 = %lf\n", strtod(string_4, &address));
printf("address = %s\n", address);
return 0;
}
输出:
1.对于string_1: strod()的第二个参数可以设为NULL
2.对于string_2:&address用来储存"非数值"字符,并且address可以作为变量输出
3.对于string_3:strtod()的string参数可用负号和E(e)科学记数法表示
4.对于string_4:当遍历到第一个不属于数值类型的字符串时,当前非数值字符和后续的字符串指针存储到 address 指向的 char* 类型存储
✏实例2:
# include <stdlib.h>
# include <stdio.h>
int main()
{
char *address;
char string_1[] = "123.456";
char string_2[] = "1234.56Hello";
char string_3[] = "-123.56e4";
printf( "string_1 = %lf\n", strtod(string_1, &address));
printf( "string_2 = %lf\n", strtod(string_2, &address));
printf( "address = %s\n", address);
printf( "string_3 = %lf\n", strtod(string_3, &address));
printf( "address = %s\n", address);
return 0;
}
输出:
注意例题中的三个&address其实是不同的,第二个&address“储存着”Hello,而string_3中无数值之外的字符所以第三个&address为NULL
✏实例3:
# include <stdlib.h>
# include <stdio.h>
int main()
{
char *address;
char string_1[] = "123.456";
char string_2[] = "1234.56Hello";
char string_3[] = "-123.56e4";
printf( "string_1 = %lf\n", strtod(string_1, &address));
printf( "string_2 = %lf\n", strtod(string_2, NULL));
printf( "address = %s\n", address);
printf( "string_3 = %lf\n", strtod(string_3, &address));
return 0;
}
输出:
如果想要输出字符串中不符合strtod()的字符,需要指定其储存地址,一般将“地址”也就是第二个参数初始化为字符类型。
🔹strtol()
函数功能:从字符串 p 中转换 long 类型整型数值,base 显式设置转换的整型进制,设置为 0 以根据特定格式判断所⽤进
制,0x, 0X 前缀以解释为⼗六进制格式整型,0 前缀以解释为⼋进制格式整型语法:strtol(string,endstr,base)
函数原型:long int strtol (const char* str, char** endptr, int base)
表示(记忆):string to long
解释说明:
str 为要转换的字符串,endstr 指向不能转换的第一个字符的地址,base 为字符串 str 所采用的进制。
参数 base 范围从2 至36或0。如base 值为10 则采用10 进制,若base 值为16 则采用16 进制。
返回值为将base进制的字符串转化为long int类型的十进制数。
✏实例:
# include <stdlib.h>
# include <stdio.h>
int main()
{
char *endstr;
long myNum;
char string_1[] = "100Hello";
char string_2[] = "16a23Hello";
long result_1 = strtol(string_1, &endstr, 2);
printf("result_1 = %ld\n", result_1);
printf("endstr = %s\n", endstr);
long result_2 = strtol(string_1, &endstr, 8);
printf("result_2 = %ld\n", result_2);
printf("endstr = %s\n", endstr);
long result_3 = strtol(string_1, &endstr, 16);
printf("result_3 = %ld\n", result_3);
printf("endstr = %s\n", endstr);
long result_4 = strtol(string_2, &endstr, 8);
printf("result_4 = %ld\n", result_4);
printf("endstr = %s\n", endstr);
}
输出:
二进制100转换为十进制为2
八进制100转换为十进制为64
十六进制100转换为十进制为256
八进制16转换为十进制为14
那么base可以理解为将string中数值的进制看成base(如,base = 2,base = 8)进制,strtol()将其转换成十进制的长整型返回。
endstr 指向不能转换的第一个字符的地址,如案例中的H和a
🔹atoi()
函数功能:将字符串转换到 int 整型
语法:atoi(string)
表示(记忆):ascii to integer
函数原型:int atoi(const char *nptr)
表示(记忆):string to integer
解释说明:atoi() 函数会扫描参数string字符串,会跳过前面的空白字符(例如空格,tab缩进)等,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,如果 string不能转换成 int 或者 string为空字符串,那么将返回 0 。特别注意,该函数要求被转换的字符串是按十进制数理解的。str字符串可包含正负号、小数点或E(e)来表示指数部分。
✏实例:
# include "stdio.h"
# include "stdlib.h"
int main(void )
{
char string_1[] = "123abc";
char string_2[] = "1a23bc";
char string_3[] = "-1.5ab";
printf( "string_1 = %d\n", atoi(string_1));
printf( "string_2 = %d\n", atoi(string_2));
printf( "string_3 = %d\n", atoi(string_3));
printf( "string_3 = %f\n", atoi(string_3)); // 以浮点数输出
return 0;
}
输出:
abc等非整数型字符都是不符合转化要求的,如果尝试以浮点数输出atoi(string)的值会输出0
🔹atof()
函数功能:将字符串转换到 float 浮点型
语法:atof(string)
函数原型: double atof(const char *nptr)
表示(记忆):ascii to float
解释说明:atof() 函数会扫描参数string字符串,会跳过前面的空白字符(例如空格,tab缩进)等,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,如果 string不能转换成 float 或者 string为空字符串,那么将返回 0 。特别注意,该函数要求被转换的字符串是按十进制数理解的。str字符串可包含正负号、小数点或E(e)来表示指数部分。
✏实例:
# include "stdio.h"
# include "stdlib.h"
int main(void ) {
char string_1[] = "1.23abc";
char string_2[] = "1a23bc";
char string_3[] = "-7.5ab";
char string_4[] = "123e4";
printf("string_1 = %f\n", atof(string_1));
printf("string_2 = %f\n", atof(string_2));
printf("string_3 = %f\n", atof(string_3));
printf("string_3 = %d\n", atof(string_3)); // 以整型输出
printf("string_4 = %f\n", atof(string_4));
return 0;
}
输出:
abc等非整数型字符都是不符合转化要求的,如果尝试以整型输出atof(string)的值会输出0
🔹atol()
函数功能:将字符串转换到 long 整型
语法:atol(string)
函数原型: long atol(const char *nptr)
表示(记忆):ascii to long integer
解释说明:atol() 函数会扫描参数string字符串,会跳过前面的空白字符(例如空格,tab缩进)等,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,如果 string不能转换成 long 整型 或者 string为空字符串,那么将返回 0 。特别注意,该函数要求被转换的字符串是按十进制数理解的。str字符串可包含正负号、小数点或E(e)来表示指数部分。
✏实例:
# include "stdio.h"
# include "stdlib.h"
int main(void ) {
char string_1[] = "1.23abc";
char string_2[] = "1a23bc";
char string_3[] = "-7.5ab";
char string_4[] = "123e4";
printf("string_1 = %ld\n", atol(string_1));
printf("string_2 = %ld\n", atol(string_2));
printf("string_3 = %ld\n", atol(string_3));
printf("string_3 = %f\n", atol(string_3)); // 以浮点型型输出
printf("string_4 = %ld\n", atol(string_4));
return 0;
}
输出:
abc等非整数型字符都是不符合转化要求的,如果尝试以浮点型输出atof(string)的值会输出0
🌟 字符检查
⭐isalpha()
函数功能:用于判断字符是否为字母(a-z和A-Z)
语法:isalpha(string)
函数原型:extern int isalpha (int c)
表示(记忆):is alpha(阿尔法希腊第一个字母)
解释说明:传入字符string并判断其是否为字母
返回值:0-不是字母,非0-是字母。
✏实例:
# include "stdio.h"
# include "ctype.h"
int main(void ) {
printf("result_1 = %d\n", isalpha('a'));
printf("result_2 = %d\n", isalpha('2'));
printf("result_3 = %d\n", isalpha('?'));
printf("result_4 = %d\n", isalpha('A'));
return 0;
}
输出:
⭐isupper()
函数功能:用于判断字符是否为大写字母(A-Z)
语法:isupper(string)
函数原型:extern int isalpha (int c)
表示(记忆):is alpha(阿尔法希腊第一个字母)
解释说明:
传入字符string并判断其是否为大写字母
返回值:0表示不是大写字母,非0表示是大写字母。
✏实例:
# include "stdio.h"
# include "ctype.h"
int main(void ) {
printf("result_1 = %d\n", isupper('a'));
printf("result_2 = %d\n", isupper('2'));
printf("result_3 = %d\n", isupper('?'));
printf("result_4 = %d\n", isupper('A'));
printf("result_5 = %d\n", isupper('B'));
return 0;
}
输出:
⭐islower()
函数功能:用于判断字符是否为小写字母(a-z)
语法:islower(string)
表示(记忆):
解释说明:
传入字符string并判断其是否为小写字母
返回值:0表示不是大写字母,非0表示是小写字母。
✏实例:
# include "stdio.h"
# include "ctype.h"
int main(void ) {
printf("result_1 = %d\n", islower('a'));
printf("result_2 = %d\n", islower('2'));
printf("result_3 = %d\n", islower('?'));
printf("result_4 = %d\n", islower('A'));
printf("result_5 = %d\n", islower('b'));
return 0;
}
输出:
⭐isdigit()
函数功能:用于判断字符是否为数字
语法:isdigit(string)
表示(记忆):
解释说明:
传入string并判断其是否为数字
返回值:0表示不是数字,非0表示是数字。
✏实例:
# include "stdio.h"
# include "ctype.h"
int main(void ) {
printf("result_1 = %d\n", isdigit('1'));
printf("result_2 = %d\n", isdigit('2'));
printf("result_3 = %d\n", isdigit('?'));
printf("result_4 = %d\n", isdigit('A'));
return 0;
}
输出:
⭐isxdigit()
函数功能:检查是否为⼗六进制数字表⽰的有效字符
语法:isxdigit(string)
表示(记忆):
解释说明:
传入sreing并判断其是否为⼗六进制数字表⽰的有效字符
返回值:0表示不是⼗六进制数字表⽰的有效字符,非0表示是⼗六进制数字表⽰的有效字符。
✏实例:
# include "stdio.h"
# include "ctype.h"
int main(void ) {
printf("result_1 = %d\n", isxdigit('1'));
printf("result_2 = %d\n", isxdigit('2'));
printf("result_3 = %d\n", isxdigit('?'));
printf("result_4 = %d\n", isxdigit('A'));
printf("result_4 = %d\n", isxdigit('a'));
printf("result_5 = %d\n", isxdigit('z'));
return 0;
}
输出:
十六进制中A,B,C,D,E,F(字母不区分大小写)这六个字母来分别表示10,11,12,13,14,15。
所以 案例中的A和a虽然是字母但也是⼗六进制数字表⽰的有效字符,而z或F(f)后的字符都不是⼗六进制数字表⽰的有效字符
⭐isspace()
函数功能:判断字符是否为空白符
语法:isspace(string)
表示(记忆):
解释说明:空白符指:空格、水平制表、垂直制表、换页、回车和换行符。
传入sreing并判断其是否为空白符
返回值:0表示不是空白符,非0表示是空白符。
✏实例:
# include "stdio.h"
# include "ctype.h"
int main(void ) {
printf("result_1 = %d\n", isspace('1'));
printf("result_2 = %d\n", isspace('z'));
printf("result_3 = %d\n", isspace(' '));
printf("result_4 = %d\n", isspace('\n'));
printf("result_5 = %d\n", isspace('\t'));
return 0;
}
输出:
⭐iscntrl()
函数功能:判断字符是否为控制字符
语法:isspace(string)
表示(记忆):
解释说明:isspace判断传入string是否为控制符返回值:0表示不是控制符,非0表示是控制符。
在ASCII码中,第0~31号及第127号(共33个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等。
控制字符在屏幕上显示时不占位(看不见);显示时占位(能看见)的字符叫打印字符
✏实例:
# include "stdio.h"
# include "ctype.h"
int main(void ) {
printf("result_1 = %d\n", iscntrl('1'));
printf("result_2 = %d\n", iscntrl('z'));
printf("result_3 = %d\n", iscntrl(' '));
printf("result_4 = %d\n", iscntrl('\n'));
printf("result_5 = %d\n", iscntrl('\t'));
return 0;
}
输出:
⭐isprint()
函数功能:判断字符是否为可打印字符
语法:isprint(string)
表示(记忆):
解释说明:isprint判断传入string是否为可打印字符:0表示不是可打印字符,非0表示是可打印字符。
可打印字符是指除ASCII码0~31及127(共33个)是控制字符或通信专用字符,剩余的都属于可打印字符。
✏实例:
# include "stdio.h"
# include "ctype.h"
int main(void ) {
printf("result_1 = %d\n", isprint('1'));
printf("result_2 = %d\n", isprint('z'));
printf("result_3 = %d\n", isprint(' '));
printf("result_4 = %d\n", isprint('\n'));
printf("result_5 = %d\n", isprint('\t'));
return 0;
}
输出:
isprint()和iscntrl()相反
⭐ispunct()
函数功能:判断字符是否为标点符号
语法:ispunct(string)
表示(记忆):
解释说明:ispunct判断传入string是否为标点符号:若 c 为标点符号或特殊符号(非空格、非数字和非英文字母)返回非 0 值,否则返回 0。
✏实例:
# include "stdio.h"
# include "ctype.h"
int main(void ) {
printf("result_1 = %d\n", ispunct('1'));
printf("result_2 = %d\n", ispunct('z'));
printf("result_3 = %d\n", ispunct('.'));
printf("result_4 = %d\n", ispunct('?'));
printf("result_5 = %d\n", ispunct('\t'));
return 0;
}
输出:
⭐isalnum()
函数功能:判断字符是否为字母或数字
语法:isalnum(string)
表示(记忆):is alnum
解释说明:isalnum判断传入string是否为字母或数字:0表示不是字母或数字,非0表示是字母或数字。
✏实例:
# include "stdio.h"
# include "ctype.h"
int main(void ) {
printf("result_1 = %d\n", isalnum('1'));
printf("result_2 = %d\n", isalnum('z'));
printf("result_3 = %d\n", isalnum('.'));
printf("result_4 = %d\n", isalnum('?'));
printf("result_5 = %d\n", isalnum('\t'));
return 0;
}
输出:
⭐isgraph()
函数功能:判断字符是否为图形字符
语法:isgraph(string)
函数原型:int isgraph( int ch)
表示(记忆):is graph(图表)
解释说明:isgraph判断传入string其是否为图形字符:0表示不是图形字符,非0表示是图形字符。
图形字符:一般从
✏实例:
# include "stdio.h"
# include "ctype.h"
int main(void ) {
printf("result_1 = %d\n", isgraph(';'));
printf("result_2 = %d\n", isgraph(' '));
printf("result_3 = %d\n", isgraph('~'));
printf("result_4 = %d\n", isgraph('$'));
printf("result_5 = %d\n", isgraph('\t'));
return 0;
}
输出:
如果给isgraph()传递中文会返回NULL
printf("result_2 = %s\n", isgraph('你'));输出:result_2 = (null)
创作不易,如果有用===》素质三连(拒绝bp)
今天就到这,明天见。🚀
❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄end❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄