文章目录
字符函数
1. 字符分类函数
C语⾔中有⼀系列的函数是专⻔做字符分类的,也就是⼀个字符是属于什么类型的字符的。这些函数的使⽤都需要包含⼀个头⽂件是 ctype.h
int islower ( int x);
islower 是能够判断参数部分的 x 是否是⼩写字⺟的。
通过返回值来说明是否是⼩写字⺟,如果是⼩写字⺟就返回⾮0的整数,如果不是⼩写字⺟,则返回0。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string>
#include<assert.h>
int main()
{
int a = islower('x');
printf("%d\n", a);
int b = islower('E');//islower函数当输入数是小写时输出非0的值
printf("%d\n", b);
if (a)
printf("a是小写");
else
printf("a是大写");
return 0;
}
2. 字符转换函数
C语⾔提供了2个字符转换函数:
int tolower ( int x ); //将参数传进去的⼤写字⺟转⼩写
int toupper ( int x ); //将参数传进去的⼩写字⺟转⼤写
int main()
{
char arr[] = "im js xxs";
int i = 0;
while (arr[i])
{
char x = toupper(arr[i]);
printf("%c", x);
i++;
}
}
字符串函数
1.strlen函数
字符串以 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前⾯出现的字符个数(不包含 ‘\0’ )。
• 参数指向的字符串必须要以 ‘\0’ 结束。
• 注意函数的返回值为size_t,是⽆符号的( 易错 )
• strlen的使⽤需要包含头⽂件
函数的使用:
int main()
{
char arr[] = "abcdef";
size_t a = strlen(arr);
printf("%d", a);
return 0;
}
strlen的模拟实现:
分法1计数法:
size_t my_strlen(const char* p)
{
assert(*p);
size_t count = 0;
while (*p != 0)
{
*p++;
count++;
}
return count;
}
int main()
{
//strlen函数的实现
char arr[] = "abcdef";
size_t a = my_strlen(arr);
printf("%d", a);
return 0;
}
方法2递归法:
size_t my_strlen(char* p)
{
if (*p == '\0')
{
return 0;
}
else
return 1 + my_strlen(p + 1);
}
int main()
{ //递归实现strlen
char arr[] = "abcdef";
size_t a = my_strlen(arr);
printf("%zd", a);
return 0;
}
分法3指针法:
size_t my_strlen(char* p)
{
assert(*p);
char* p1 = p;
while (*p != '\0')
p++;
return p - p1;
}
int main()
{ //指针实现strlen
char arr[] = "abcdef";
size_t a = my_strlen(arr);
printf("%zd", a);
return 0;
}
2.strcpy函数
源字符串必须以 ‘\0’ 结束。
会将源字符串中的 ‘\0’ 拷⻉到⽬标空间。
⽬标空间必须⾜够⼤,以确保能存放源字符串。
⽬标空间必须可修改
strcpy的使用:
int main()
{
//strcpy函数的实现
char arr1[] = "abcdef";
char arr2[10] = { 0 };
size_t x = strlen(arr1);
strcpy(arr2, arr1);
for (int i = 0; i < x; i++)
{
printf("%c",arr2[i]);
}
return 0;
}
strcpy的模拟实现:
```c
char* my_strcpy( char* p2, const char *p1)
{
char* ret = p2;
assert(p1 && p2);//assert(*p1);assert(*p2)l;
while (*p1 != '\0')
{
*p2++ = *p1++;//*p2=*p1;p2++;p1++;
}
return ret;
}
int main()
{
//strcpy函数的实现
char arr1[] = "abcdef";
char arr2[10] = { 0 };
char* c=my_strcpy(arr2, arr1);
printf("%s", c);
return 0;
}
3.strcat函数
源字符串必须以 ‘\0’ 结束。
⽬标字符串中也得有 \0 ,否则没办法知道追加从哪⾥开始。
⽬标空间必须有⾜够的⼤,能容纳下源字符串的内容。
⽬标空间必须可修改。
strcat函数的使用:
int main()
{
char arr1[20] = "abcdef";
//strcat(arr1, "gh");
printf("%s", arr1);
return 0;
}
int main()
{
//自己给自己追加
char arr1[20] = "abcdef";
strcat(arr1, arr1);
printf("%s", arr1);
return 0;
}
strcat函数的模拟现实:
char* my_strcat(char* p2, const char* p1)
{
char* ret = p2;
assert(p1 && p2);
while (*p1!= '\0')//找到目标空间的/0
p1++;
while (*p1 != '\0')
{
*p2++ = *p1++;
}
return ret;
}
int main()
{
//自己给自己追加
char arr1[25] = "abcdef";
//strcat(arr1, "gh");
strcat(arr1, arr1);
printf("%s", arr1);
return 0;
}
后续补充其他字符串函数