1.字符分类函数
c语言中提供了许多对字符进行分类的函数,这些函数都需要包含头文件<ctype.h>。
iscntrl函数:用来判断字符是否为控制控制字符的C语言库函数。
isspace函数:用于检查是否为空字符例如:空格(' ')、水平定位字符('\t')、归位键('\r')、换行('\n')、垂直定位字符('\v')或翻页('\f')。
isdigit函数:用来检查字符是否为数字0~9。
isxdigit函数:用来检查字符是否为十六进制数字,包括所以十进制数字,小写的a~f,大写的A~F。
islower函数:用来检查字符是否为小写的a~z。
isupper函数:用来检查字符是否为大写的A~Z。
isalnum函数:用来检查字符是否为字符或数字。
ispunct函数:用来检查字符是否为标点符号或者特殊符号。
isgraph函数:用来检查字符是否为图形字符。
isprint函数:用来检查字符是否为可打印的字符。(包括空格)
2.字符转化函数
tolower函数:将传入的大写字母改为小写字母。
int tolower (int C);
toupper函数:将传入的小写字母转成大写字母。
int toupper (int c);
3.strlen函数
strlen函数是用计算字符串长度的函数,每一个字符串后面都有一个‘\0’,strlen函数结束的条件就是遇到‘\0’。strlen函数的返回值是size_t(无符号),头文件是<string.h>。
strlen函数的使用
size_t strlen ( const char * str );
char a[] = "abdcgar";
int ret = strlen(a);
printf("%d", ret);\\输出结果是7
strlen函数模拟
strlen函数的模拟有三种方法:计数器法,指针法,不创建计算器法。
1.计数器法
size_t count_strlen(const char* a)
{
int count = 0;
while (*a != '\0')
{
a++;
count++;
}
return count;
}
2.指针法
size_t point_strlen(const char* a)
{
char* p = a;
while (*a != '\0')
{
a++;
}
return a - p;
}
3.不使用计数器
size_t no_count_strlen(const char* a)
{
if (*a == 0)
return 0;
else
return 1 + no_count_strlen(a+1);
}
4.strcpy函数
strcpy函数是将源字符串拷贝到目标字符串中,源字符串必须由‘\0’结尾。
strcpy函数的使用
//char *strcpy(char *dest,const char*sour) 返回值是char类型,dest是目标字符串,sour是源字符串
int main()
{
char a[20] = { 0 };
char b[] = "suidf";
strcpy(a, b);
printf("%s", a);//输出结果是suidf
return 0;
}
strcpy函数的模拟
char* my_strcpy(char* dest, const char* sour)
{
char* ret = dest;
assert(dest != NULL);
assert(sour != NULL);
while (*dest++ = *sour++)
{
;
}
return ret;
}
5.strcat函数
strcat函数是给目标字符串结尾追加字符串,源字符串需要有‘\0’,目标字符串也需要有‘\0’,目标字符串的容量足够大并且可修改。
strcat函数的使用
int main()
{
char a[100] = { "WeCome " };
char b[] = { "to C language" };
strcat(a, b);
printf("%s", a);//输出结果:WeCome to C language
return 0;
}
strcat函数的模拟
char* my_strcat(char* dest, const char* sour)
{
char* ret = dest;//存储dest的首地址
assert(dest != NULL);//断言防止dest,sour为空指针
aseert(sour != NULL);
while (*dest)
{
dest++;
}
while (*dest++ = *sour++)
{
;
}
return ret;//在c语言函数库中strcat函数需要返回目标函数的首地址
}
6.strcmp函数
strcmp函数是用来比较字符串的大小,例如有两字符串str1和str2:
如果str1大于str2就返回一个大于零的值
如果str1小于str2返回一个小于零的值
如果str1等于str2返回零。
strcmp函数实际上是比较的是两字符串的Ascll码值的大小。
strcmp函数的使用
#include<stdio.h>
#include<string.h>
int main()
{
/*char ch[] = {"sdafadsf"};
char re[] = {"fasdfasdf"};*/
char* ch = "adsfsdf";
char* re = "asdfwr";
int ret = strcmp(ch, re);
printf("%d\n", ret);//输出结果:-1
return 0;
}
strcmp函数的模拟
int my_strcmp(const char* str1, const char* str2)
{
assert(str1 != NULL);
assert(str1 != NULL);
while (*str1 == *str2)
{
if (*str1 != '\0' || *str2!='\0')
{
str1++;
str2++;
}
}
return *str1 - *str2;
}
7.strncpy函数
strncpy函数可以与strcpy函数的比较,strncpy函数是将源字符串的num个字符拷贝到目标字符串,如果源字符串的长度小于num,拷贝完源字符串之后在目标字符串后补\0,直到num个。
int main()
{
char str1[] = "sdfasd";
char str2[] = "fad";
strncpy(str1, str2, 6);
printf("%s", str1);
return 0;
}
8.strncat函数
strncat函数的是目标字符串的末尾追加源字符串的前num个字符,如果源字符串的长度小于num,那么就会将源字符串中一直到\0之前的字符拷贝到目标字符串(包括\0)。
strncat函数的使用
int main()
{
char dest[100] = {"afdsf"};
char source[] = { "aaaa" };
strncat(dest, source, 4);
printf("%s", dest);//输出结果afdsfaaaa
return 0;
}
9.strncmp函数
strncmp函数的作用是比较str1和str2这个两个字符串的前num个字符的大小,返回值与strcmp的返回值一样。
strncmp函数的使用
int main()
{
char dest[] = "asdf";
char source[] = "asde";
int ret= strncmp(dest, source, 3);
printf("%d", ret);//比较前三个字符的大小前三个字符相同所以返回值为零
return 0;
}
10.strstr函数
strstr的作用是在str1字符串中寻找str2字符串,并返回str2在str1中第一次出现的位置的地址,其中字符串寻找的过程中不包括\0,\0作为结束标志。
strstr函数的使用
int main()
{
char dest[] = "asdf";
char sour[] = "df";
char *ch = NULL;
ch = strstr(dest, sour);
printf("%s", ch);//因为strstr函数返回的地址所以要用指针变量接收
return 0;
}
strstr函数的模拟
char* my_strstr(const char* str1, const char* str2)
{
assert(str1 != NULL);
assert(str2 != NULL);
const char* s1 = NULL;
const char* s2 = NULL;
const char* dev = str1;
if (*str2 == '\0')
{
return (char*)str1;
}
while (*dev)
{
s1 = dev;
s2 = str2;
while((*s1!='\0') && (*s2!='\0') && (*s1 == *s2))
{
s1++;
s2++;
if (*s2 == '\0')
{
return (char*)dev;
}
}
dev++;
}
return NULL;
}
11.strtok函数
strtok函数的作用是在目标字符串中寻找分割符号,并以分隔符分割字符串找到分割符之后就记录本次的位置,下次再使用的时只需要传空指针即可。
char *strtok(char s[], const char *delim);
strtok函数的使用
int main()
{
char arr[100] = "www.baidu.com";
char delim[10] = {'.'};
char* p = NULL;
p =strtok(arr, delim);//输出结果是www
printf("%s\n", p);
p = strtok(NULL, delim);//输出结果是baidu
printf("%s\n", p);
return 0;
}
今天的分享就到这里啦,请大家多多指点!