C语言字符函数

C语言库函数提供给了我们许多常用的字符函数,我们依旧可以通过cplusplus.com网站来学习~

目录

strlen

strcpy 

strcat

strcmp

strstr

 strtok

strerror

字符分类函数 


strlen

strlen(string strlen)求字符串长度 函数的用于返回的是在字符串中 '\0' 前面出现的字符个数(不包含 '\0' )。

 strlen使用时得引头文件,他的返回类型是size_t,参数(const char* str)是字符串的首地址值得注意的是strlen返回类型为无符号整型,故(strlen(str1) - (str2))恒大于零。

下面为memcpy函数的模拟实现

#include
size_t my_strlen(const char* str)
{
	size_t count = 0;
	assert(str);
	while (*str!='\0')
	{
		count++;
		str++;
	}
	return count;
}

strcpy 

strcpy(string copy)函数用于将源指向的 C 字符串复制到目标所指向的数组中,包括终止空字符(并在该点停止)。为避免溢出,目标所指向的数组的大小应足够长,以包含与源相同的 C 字符串(包括终止空字符),并且内存中不应与源重叠。

strcpy使用时得引头文件,他的返回类型是char*第一个参数(char* destination)指向要在其中复制内容的目标数组的指针第二个参数指向(char* source)要在其中复制内容的目标数组的指针

#include
char* my_strcpy(char* destination, const char* source)
{
	assert(destination && source);
	char* p = destination;
	while (*source)
	{
		*destination++ = *source++;
	}
	*destination = *source;
	return p;
}

strcat

strcat字符串追加函数用于将源字符串的副本追加到目标字符串。目标中的终止空字符被源的第一个字符覆盖,并且由目标中两者的串联形成的新字符串的末尾包含一个空字符。

 strcat使用时得引头文件,他的返回类型是char*第一个参数(char* destination)指向指向目标数组的指针,目标数组应包含 C 字符串,并且足够大以包含串联的结果字符串第二个参数(char* source)指向要追加的 C 字符串、这不应与目标重叠。

下面是strcat的模拟实现

#include
char* my_strcat(char* destination, const char* source)
{
    char* str = destination;
    assert(destination && source);
    while (*destination != '0')
    {
        destination++;
    }
    while (*destination++ = *source++);
    return str;
}

strcmp

strcmp字符串比较函数用于将字符串 str1 与字符串 str2 进行比较。此函数开始比较每个字符串的第一个字符,如果它们彼此相等,则继续使用以下对,直到字符不同或达到终止空字符。

  strcmp使用时得引头文件他的返回类型是int(指示字符串之间的关系,>0第一个不匹配的字符在 ptr1 中的值大于在 ptr2 中的值;<0第一个不匹配的字符在 ptr1 中的值低于在 ptr2 中的值,=0两个字符串的内容相等)第一个参数(char* destination)指向要比较的字符串第二个参数(char* source)指向要比较的字符串。

下面是strcat的模拟实现

#include
int my_strcmp(const char* str1, const char* str2)
{
	assert(str1 && str2);
	while (*str1 == *str2 && *str1 )
	{
		str1++;
		str2++;
	}
	return (*str1 - *str2);
}

strstr

strstr查找子串函数用于返回指向 str1 中第一次出现的 str2 的指针,如果 str2 不是 str1 的一部分,则返回空指针。

 strcpy使用时得引头文件,他的返回类型是const char*,第一个参数(const char* str1)为要扫描的字符串,第二个参数(const char* str2)为包含要匹配的字符序列的字符串。

下面是strstr函数的模拟实现

#include
const char* my_strstr(const char* str1, const char* str2)
{
	assert(str1 && str2);
	const char* s1 = str1;
	const char* s2 = str2;
	const char* p = s1;
	while (*p)
	{
		s1 = p;
		s2 = str2;
		while (*s1 == *s2 && *s1 && *s2)
		{
			s1++;
			s2++;
		}
		if (*s2 == '\0')
		{
			return p;
		}
		p++;
	}
		return NULL;
}

 strtok

strtok字符串分割函数,

1. str参数是个字符串,定义了用作分隔符的字符集合

2.第一个参数指定一个字符串,它包含了 0 个或者多个由 sep 字符串中一个或者多个分隔符分割的标记。
3.strtok 函数找到 str 中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针(注:strtok函数会改变被操作的字符串,所以在使用 strtok 函数切分的字符串一般都是临时拷贝的内容并且可修改。
4.strtok 函数的第一个参数不为 NULL ,函数将找到 str 中第一个标记, strtok 函数将保存它在字符串中的位置。
5.strtok 函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
下面是strtok的使用样例:
C语言字符函数_第1张图片

strerror

strerror 错误报告函数,可以返回返回错误码所对应的错误信息。

 下面是strerror的应用样例:C语言字符函数_第2张图片

其中errno是C语言设置的一个全局的错误码存放的变量,用来保存最后的错误码

字符分类函数 

函数 如果它的参数符合下列条件就返回真
isspace 空白字符:空格‘ ’,换页‘\f’,换行'\n',回车'\r',制表符'\t',或垂直制表符'\v'
isdigit 十进制数字0~9
isxdigit 十六进制数字,包括所有十进制数字,小写字母a~f,大写字母A~F
islower 小写字母a~z
isupper 大写字母A~Z
isalpha 字母a~z或A~Z
isalnum 字母或数字a~z,A~Z或0~9
ispunct 标点符号,任何不属于数字或字母的图像字符(可打印符号)
isgraph 如何图形字符
isprint 任何可打印字符,包括图像字符和空白字符
iscntrl
任何控制字符

要调用这些字符分类函数不要忘记引头文件哦~

好了,本章关于字符函数的介绍就到这了~ 

你可能感兴趣的:(c语言)