字符函数
字符函数是在字符上面做文章的函数,常用的有字符分类函数和字符转化函数
字符分类函数就是将目标字符进行判断,得出真假。
字符转换函数就是转换目标字符的形式。
字符串函数
于字符函数类似,是在字符串上做文章的函数,常用的有strlen、strcpy、strcat、strncpy等。
就拿strlen举例子:
size_t strlen ( const char * str );
用来数字符串长度的函数,输入目标字符串的指针即可运行,让我们来模拟实现一下:
int my_strlen(const char*str)
{
int count = 0;
while (*str!='\0')
{
str++;
count++;
}
return count;
}
(很简单就能实现)
再来看strcpy:
char* strcpy(char * destination, const char * source );
用来拷贝的函数,需要输入拷贝函数和目标函数,让我们模拟实现一下:
char* my_strcpy(char* arr2, const char* arr1)
{
char* z = arr2;
while (*arr2++ =*arr1++)
{
;
}
return z;
}
它会把拷贝字符串完全拷贝给目标字符串,但是不能指定拷贝的长度,于是我们能用另一个函数strncpy:
char * strncpy ( char * destination, const char * source, size_t num );
括号里会再追加一个整形变量 ,指定拷贝的格数。
接着还有函数strcat用来追加内容,模拟实现:
char* my_strcat(char* arr1, const char* arr2)
{
char* z = arr1;
while (*arr1!='\0')
{
arr1++;
}
while (*arr1++ = *arr2++)
{
;
}
return z;
}
函数strcmp用来比较字符串大小,模拟实现:
int my_strcmp(char* arrf, char* arrb)
{
assert(*arrf);
assert(*arrb);
while (*arrf == *arrb&&*arrf)
{arrf++;
arrb++;
}
if (*arrf == 0 && *arrb == 0)
return 0;
else
return *arrf - *arrb;
}
当然也存在strncat,模拟实现:
char* my_strncat(char* arrf, const char* arrb, int num)
{assert(arrf);
assert(arrb);
char* set = arrf;
int s = 0;
while (*arrf)
{
arrf++;
}
while (*arrb)
{
*arrf = *arrb;
arrf++;
arrb++;
s++;
}
*arrf = '\0';
if (s != num)
{
for (int i = 0; i < num - s; i++)
{
arrf++;
*arrf = '\0';
}
}
return set;
}
由此可见任何函数都可以通过最基础的代码模拟出来,但往往会很繁琐,所以引用库函数能给程序员带来很多便利。