字符函数:
字符分类函数:
//头文件 -- ctype.h
字符分类函数用于判断字符类型:有如下函数:
//isdigit:判断数字0-9,如果是数字则返回非0的值,否则返回0;
//isxdigit:判断十六进制数字,包括所有的十进制数字,小写字母,大写字母
如果是则返回非0的值,否则返回0
//islower:判断小写字母a-z,如果是小写字母则返回非0的值,否则返回0
//isupper:判断大写字母A-Z,如果是大写字母则返回非0的值,否则返回0
//isalpha:判断字母A-Z和a-z,如果是字母则返回非0的值,否则返回0
//isalnum:判断字母或者数字0-9,A-Z和a-z,如果是字母或者数字,则返回非0的值,否则返回0
//isgraph:任何图形字符
//isprint:任何可打印字符,包括图形字符和空白字符
练习:将字符串的小写字母转为大写
首先遍历字符串,然后通过islower函数判断某个字符是否是小写字母,最后将所选出的小写字母转换成大写字母(通过ASCII码表来转换)
#include<stdio.h>
#include<string.h>
#include<ctype.h>//分类函数头文件
int main()
{
char str[] = "i am A man";
size_t len = strlen(str);//strlen返回值是size_t类型
for (size_t i = 0; i < len; i++)
{
if (islower(str[i]))
{
str[i] = str[i] - 32;
}
}
printf("%s", str);// I AM A MAN
return 0;
}
字符转换函数:
//头文件 -- ctype.h
// int tolower(int c); --- 大写转小写
// int toupper(int c); --- 小写转大写
实例:
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
char ch[20];
gets(ch);
//ch=tolower(ch); //大写转小写
for (int i = 0; i < 20; i++)
{
ch[i] = tolower(ch[i]);
}
printf("%s", ch);
return 0;
}
字符串函数:
常见字符串函数:strlen,strcpy,strcmp,strcat-----头文件string.h
strlen函数:
计算字符串长度函数,遇到 '\0' 则停止,不计入 '\0'.
strcpy函数:
拷贝字符串(包含\0) ,会在末尾自动追加'\0'
//注意事项: 1.拷贝源中必须有 \0 ,并且 \0 也会被拷贝
// 2.目的地的空间必须比拷贝源大
// 3.保证目标空间可以修改
实例:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = "hello CSDN";
char arr2[] = "XXXXXXXXXXXXX";
strcpy(arr2, arr1);
printf("%s", arr2);//hello bit (包括\0)
return 0;
}
strcmp函数:
//strcmp函数:比较两个字符串大小字符串
//比较两个字符串对应位置上的字符(按照字典序比较)
//第一个字符串 > 第二个字符串,返回 大于0 的数字
//第一个字符串 = 第二个字符串,返回 0
//第一个字符串 < 第二个字符串,返回 小于0 的数字
实例:
#include<stdio.h>
#include<string.h>
int main()
{
printf("%d\n", strcmp("abcdef", "abq"));//-1
return 0;
}
strcat函数:
//strcat函数:字符串追加(但不能追加本身)
//会在末尾自动追加'\0'
注意事项:
// 1.目的地中必须有 \0 ,从 \0 开始追加
// 2.追加源中必须有 \0 ,在 \0 停止追加
// 3.保证目标空间足够大,并且目标空间可以被修改
// 4.要追加的 字符串不应与目标字符串重叠(否则目标地的\0 会被覆盖)
实例:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{
char arr[30] = "hello";//防止溢出
char* p = "CSDN";
strcat(arr, p);
printf("%s", arr);//helloCSDN
return 0;
}