- 字符分类函数:在C语言中有专门做字符分类的函数,它们都需要包含一个头文件<ctype.h>。那么,接下来我们就看一看,有哪些做字符串的函数吧。
- 这些就是做字符串的函数,其它的都非常相似,我们举一个,来练练手,以islower举例,它所做的作用就是:能够判断参数部分的字符是否是小写字母的,它的写法是:
int islower ( int c );c代表字符。
- 练习一下:写⼀个代码,将字符串中的⼩写字⺟转⼤写,其他字符不变,则代码为:
#include<stdio.h>
#include<ctype.h>
int main()
{
int i = 0;
char arr[] = { "I am a college Student" };
char c;
while (arr[i])
{
c = arr[i];
if (islower(c))
c -= 32;
putchar(c);
i++;
}
return 0;
}
- 讲完字符分类函数,就来讲一讲字符转换函数,有两个:
- int tolower (int c);//将参数传进去的大写字母转小写。
- int toupper(int c);//将参数传进去的小写字母转大写。
- 练习题目:使用tolower,将字符串中的⼩写字⺟转⼤写,其他字符不变。则代码为:
#includde<stdio.h>
#include<ctype.h>
int main()
{
char arr[] = { "I am a Student" };
int i = 0;
while (arr[i] !='\0')
{
if (islower(arr[i]))
{
arr[i] = tolower(arr[i]);
}
i++;
}
printf("%s\n", arr);
return 0;
}
- strlen的使用,和如何模拟strlen:它所对应的头文件是<string.h>,它所代表的意思是:字符串的长度。模拟实现可以有三个方面的模拟实现,1.计数器的而方式。2.指针-指针的方式。3.递归的方式。三个模拟实现strlen的方式。
- 首先,先看一下strlen这个的使用,例子:比较str1和str2的大小,则代码为;
int main()
{
const char str1 = "abcde";
const char str2 = "qwer";
if (strlen(str2) - strlen(str1)> 0)
//比较,因为strlen的返回值是size_t是一个无符号的整形
//无论最终的结果是正数还是负数,其值的是一个没有符号的整数。
{
printf("str2>str1\n");
}
else
{
printf("str1>str2\n");
}
return 0;
}
- 模拟实现strlen的实现:1.计数器的而方式:则代码为:
#include<assert.h>
size_t mr_strlen(char* z)
{
assert(z);//断言一下,防止z为NULL
int count = 0;//计数器
while (*z != '\0')
{
count++;
z++;
}
return count;
}
int main()
{
char arr[] = "abcdef";
size_t yu = mr_strlen(arr);//创造出一个关于mr_strlen的函数
printf("%zd\n", yu);
return 0;
}
- 2.指针-指针的方式则代码为:
#include<assert.h>
size_t my_strlen(char* s)
{
assert(s);
char* p = s;
while (*p != '\0')
p++;
return p - s;
}
int main()
{
char arr[] = "abcdef";
size_t yu = my_strlen(arr);//创造出一个关于mr_strlen的函数
printf("%zd\n", yu);
return 0;
}
- 3.递归的方式。的代码为:
size_t mr_strlen(const char* c)
{
if (*c == '\0')
return 0;
else
return 1 + mr_strlen(c + 1);
}
int main()
{
char arr[] = "abcdef";
size_t yu = mr_strlen(arr);//创造出一个关于mr_strlen的函数
printf("%zd\n", yu);
return 0;
}
三种方式都能模拟实现strlen的实现,每一个都特别的重要。你学会了吗?