1.strstr函数
函数作用:
在字符串1中查找是否存在字符串2。
例子:
函数定义:
const char * strstr ( const char * str1, const char * str2 );
- str1字符串1的首字符的指针。
- str2字符串2的首字符的指针。
- const修饰是因为只用于查找,不做修改,防止写错误代码。
函数返回值:
如果为真则返回字符串2在字符串1首次出现的地址,如果为假则不存在返回NULL(空指针)
模拟实现:
const char* my_strstr(const char* str1, const char* str2)
{
//如果*str2指向的为空就返回str1
if(!*str)
return str1;
const char* p1 = NULL;//临时指针变量
const char* p2 = NULL;
while (*str1)//遍历每个字符,结束条件'\0'
{
//如果遇到相等,就像后判断
if (*str1 == *str2)
{
//使用中间指针去判断,防止str1和str2的起始位置丢失
p1 = str1;
p2 = str2;
//判断是否相等,相等就继续向下判断
while (*p1 == *p2 && *p1 != '\0' && *p2 != '\0')
{
p1++;
p2++;
}
//如果此时p2=='\0',就说明找到了
if (*p2 == '\0')
return str1;
//如果*p1=='\0',*p2!='\0'就说明长度不够了,找不到了
if (*p1 == '\0')
return NULL;
}
str1++;
}
return NULL;
}
2.strtok函数
函数作用:
通过指定的分隔符切割字符串
例子:
函数定义:
char * strtok ( char * str, const char * delimiters );
- str需要被切割的字符串的首地址,如果是第一次被切割则为字符串的首地址,如果不是第一次则是NULL空地址(函数会在切割后保留切割符出现的地址)。
- delimiters是分隔符/切割符,可以是单个分割符的地址,也可以是分割符集合(字符串)的首地址。
函数返回值:
如果存在分隔符,则函数返回切割后字符的首地址,如果不存在,则返回空指针NULL。
函数的使用:
- 此函数在切割个同意字符串时,第一次使用时,需要传字符串的地址,在这之后则不需要传地址了,函数在每一次切割后都会记住分隔符出现的位置,下次调用时只需传空指针NULL,函数就会根据记忆的地址向后切割。
- 函数再切割之后会在切割符处换上'\0',然后返回字符串的起始地址。
- 函数在切割时会对字符串进行操作,为避免对原字符串进行操作,在操作前拷贝一份,来进行操作。
3.strerror函数
函数作用:
- 在不同的操作系统和C语言标准库中会规定一些错误码,一般都是放在errno.h这个头文件中说明。
- 在程序运行时,会生成变量errno来记录程序出现错误时的错误码,在程序启动时为0,当调用库函数出现错误时就会将对应的错误码放在errno中,而错误码不能表示错误信息,这时候就需要strerror函数。
- 函数通过错误码把错误信息字符串的首地址返回出来。
例子:
函数定义:
char * strerror ( int errnum );
- errnum错误码
- char* 错误码对应的错误信息的字符串的地址
perror函数:
perror函数使用打印错误信息,函数参数为错误信息的首地址,返回为空,一般设为满足错误条件时就会调用perror函数打印,那么起始perror函数就是printf函数+strerror函数。
本章内容结束,下章见,拜拜!!!