目录
前言
本章我们讲一下字符函数和字符串函数,共包括两个大部分,即字符函数详解和字符串函数详解,每个部分都详细介绍所对应的函数类型,话不多说,让我们走进今天的课程
一、字符函数
1、字符分类函数
C语言中有一系列的函数是专门做字符分类的,也就是一个字符是属于什么类型的字符的
这些函数的使用都需要包含一个头文件是 ctype.h(这类函数的具体说明放置在文章最后)
这些函数的使用方式都非常类似,我们拿其中一个举例:
int islower ( int c );
islower 是能够判断参数部分的 c 是否是小写字母的
通过返回值来说明是否是小写字母,如果是小写字母就返回非0的整数,如果不是小写字母,则返回0
2、字符转换函数
C语言提供了2个字符转换函数:
int tolower ( int c );
//将参数传进去的⼤写字⺟转⼩写
int toupper ( int c );
//将参数传进去的⼩写字⺟转⼤写
这些函数的使用也都需要包含一个头文件 ctype.h
#include <stdio.h>
#include <ctype.h>
int main ()
{
int i = 0;
char str[] = "Test String.\n";
char c;
while (str[i])
{
c = str[i];
if (islower(c))
c = toupper(c);
putchar(c);
i++;
}
return 0;
}
二、字符串函数
1、strlen的使用和模拟实现
strlen是用来计算字符串大小的函数,返回字符串中\0之前的元素个数
size_t strlen ( const char * str );
注意函数返回值类型为size_t,是无符号的(易错)
strlen的使用需要包含头文件<string.h>
strlen函数的模拟实现:
int my_strlen(const char* str)
{
int count = 0;
while (*str)
{
count++;
str++;
}
return count;
}
2、strcpy 的使用和模拟实现
strcpy是用来把一个字符串中的数据拷贝到另一个字符串中的函数,返回目标首元素的地址
char* strcpy(char * destination, const char * source );
注意:目标空间必须足够大且能修改,以确保能存放源字符串
strcpy函数的模拟实现
char *my_strcpy(char *dest, const char*src)
{
char *ret = dest;
assert(dest != NULL);
assert(src != NULL);
while((*dest++ = *src++))
{
;
}
return ret;
}
3、strcat 的使用和模拟实现
strcpy是用来把一个字符串中的数据追加到另一个字符串中的函数,返回目标首元素的地址
strcat函数的模拟实现
char* Simu_strcat(char* a, char* b)
{
char* len = a;
while (*a != '\0')
a++;
while ((*a++ = *b++) != '\0')
;
return len;
}
4、strcmp的使用和模拟实现
strcmp是比较两个字符串中对应位置上字符ASCII码值的大小的函数,若大于则返回大于零的数,等于则返回零,小于则返回小于零的数
strcmp函数的模拟实现
int my_strcmp(const char* a,const char* b)
{
while (*a == *b && *a != '\0' && *b != '\0')
{
a++;
b++;
}
return *a - *b;
}
5、strncpy 函数的使用
char * strncpy ( char * destination, const char * source, size_t num );
拷贝num个字符从源字符串到目标空间
如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个
6、strncat 函数的使用
char * strncat ( char * destination, const char * source, size_t num );
将source指向字符串的前num个字符追加到destination指向的字符串末尾,再追加一个\0字符
7、strncmp函数的使用
int strncmp ( const char * str1, const char * str2, size_t num )
比较str1和str2的前num个字符,如果相等就继续往后比较,最多比较num个字母,如果提前发现不一样,就提前结束,大的字符所在的字符串大于另外一个。如果num个字符都相等,就是相等返回0
8、strstr 的使用和模拟实现
char * strstr ( const char * str1, const char * str2);
函数返回字符串str2在字符串str1中第一次出现的位置
char* my_strstr(const char* str1, const char* str2)
{
char* move = (char*)str1;
char* s1 = (char*)str1;
char* s2 = (char*)str2;
if (str2 == '\0')
{
return (char*)str1;
}
while (*move)
{
s1 = move;
s2 = (char*)str2;
while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2)
{
s1++;
s2++;
}
if (*s2 == '\0')
{
return move;
}
move++;
}
return NULL;
}
本章到这里就结束啦,希望各位小伙伴可以点个关注,支持一下阿鹿,大家的鼓励是我前进的第一动力,3Q~