一、字符函数
1. 字符分类函数
C语言中有一系列的函数是对字符进行分类的,就是对判断一个字符属于什么类型的字符,这类字符函数的使用都要包含一个头文件ctype.h。
这些函数的使用方法非常类似,这里我们就只举一个例子。
int islower ( int c );
在C语言中,islower是一个用于判断字符是否为小写字母的函数。该函数接受一个整数参数c,它应该是无符号字符或EOF(常量)。如果参数c是小写字母,则返回非零值(真);否则返回0(假)。
【示例】将字符串中的小写字母转大写,其他字符不变。
#include<stdio.h> #include<ctype.h> int main() { char str[] = "Test String.\n"; int i = 0; char c; while (str[i]) { c = str[i]; if (islower(c)) c -= 32; // 小写字母的ASCII码值减去32就等于它对应的大写字母的ASCII码 putchar(c); i++; } return 0; }
2. 字符转化函数
C语言提供了2个字符转换函数:
C语言提供了2个字符转换函数:
int tolower ( int c ); //将参数传进去的⼤写字⺟转⼩写 int toupper ( int c ); //将参数传进去的⼩写字⺟转⼤写
在上面的示例中,我们将小写转大写,是-32完成的效果,有了转换函数,就可以直接使用 tolower 函
数。
#include<stdio.h> #include<ctype.h> int main() { char str[] = "Test String.\n"; int i = 0; char c; while (str[i]) { c = str[i]; if (islower(c)) c = toupper(c); putchar(c); i++; } return 0; }
二、字符串函数
1. strlen函数的使用和模拟实现
函数原型:
size_t strlen ( const char * str );
- 字符串以 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前⾯出现的字符个数(不包含 ‘\0’ )。
- 参数指向的字符串必须要以 ‘\0’ 结束。
- 注意函数的返回值为 size_t,是无符号的( 易错 )
- strlen的使用需要包含头文件
- 学会strlen函数的模拟实现
strlen函数的使用
计算字符串的长度
#include<stdio.h> #include<string.h> int main() { char str1[] = "abcdef"; size_t len = strlen(str1); printf("%zu\n", len); return 0; }
strlen函数的模拟实现
方法一:计数器的方式实现
#include<stdio.h> #include<assert.h> int my_strlen(const char* str) // const修饰,使其不能被修改 { int count = 0; assert(str); // 断言,避免传入空指针 while (*str) { count++; // 进入循环,说明不为空 str++; } return count; } int main() { char str1[] = "abcdef"; int len = my_strlen(str1); printf("%d\n", len); return 0; }
方法二:递归实现
#include<stdio.h> #include<assert.h> int my_strlen(const char* str1) { assert(str1); // 断言,避免传入空指针 if (*str1 == '\0') return 0; // 等于'\0',说明字符串结束,直接返回 else return 1 + my_strlen(str1 + 1); } int main() { char str1[] = "abcdef"; int len = my_strlen(str1); printf("%d\n", len); return 0; }
方法三:指针 - 指针的方式实现
#include<stdio.h> int my_strlen(char* s) { char* p = s; while (*p != '\0') p++; return p - s; } int main() { int len = my_strlen("abcdef"); printf("%d\n", len); return 0; }
【C语言基础】:字符函数和字符串函数-2