- 字符串以 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符个数(不包
含 ‘\0’ );- 传递的实参所指向的字符串必须要以 ‘\0’ 结束,否则得到的是一个错误值;
- 函数strlen()的返回值为size_t,是无符号的整数;
int my_strlen(const char*str){
int count = 0;
assert(str 1= NULL);
while(*str != '\0')
{
count ++;
str++;
}
return count;
}
结果:
- 所拷贝的字符串必须以 ‘\0’ 结束;
- 拷贝时会将源字符串中的 ‘\0’ 拷贝到目标字符串中;
- 必须保证存放拷贝的字符串的目标空间必须足够大,以确保能存放源字符串;
4.目标空间必须可变,这样才能往里面拷贝字符串;
char* my_strcpy(char*dest,char*str)
{
char* ret = dest;
assert(dest != NULL);
assert(str != NULL);
while(*dest++ = *str++)
{
;
}
return ret;
}
结果:
源字符串必须以 ‘\0’ 结束。
目标空间必须有足够的大,能容纳下源字符串的内容。
目标空间必须可修改。
char* my_strcat(char*dest,char*stc)
{
assert(dest && stc);
char* ret = dest;
//找目标字符串的\0
while(*dest)
{
dest++;
}
//追加字符串包括\0
while(*dest++ = *stc++)//先解引用,然后赋值,然后自增,然后判断;
{
;
}
return ret;
}
结果:
char* my_strstr(const char* str1,const char* str2){
assert(str1 && str2);
const char* s1 =NULL;
const char* s2 =NULL;
const char* sta = str1;//保存原字符串的首地址
if(*str2 == '\0')
{
return (char*)str1;
}
while(*sta)
{
s1 = sta;
s2 = str2;
while(*s1 && *s2 && (*s1 == s2)
{
s1++;
s2++;
}
if(*s2 == '\0')
{
retuen (char*) sta;
}
sta++;
}
return NULL;
}
结果:
- 功能:在字符串中查找指定标记:如在(add@acdd#sd$)中,查找标记:(@#¥),然后把标记隔开的字符打印;
- 第一个参数是字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分隔标记;
- strtok函数找到str中的标记符,并将它替换为’\0’,并且用一个指针保存这个地址,然后返回这个指针;strtok函数会改变被操作的字符串,所以在使用之前应该拷贝所要操作的字符串,然后传递拷贝的字符串给strtok函数,这样目标字符串就不会被改变;
- strtok函数第一个参数不为NULL时,函数讲找到str字符串中的第一个标记,strtok函数将保存它在字符串中的位置;
- strtok函数的第一个参数为NULL时,函数将在同一个字符串中被保存的位置开始,查找下一个标记;
- 如果字符串中不存在更多的标记,则返回NULL指针;
- 例子:
int main() { char arr[] = "[email protected]"; char* p ="@ ."; char tmp[20] ={0}; strcpy(tmp,arr); char* ret = NULL; ret = strtok(tmp,p); printf("%s\n",ret); ret = strtok(NULL,p); printf("%s\n",ret); ret = strtok(NULL,p); printf("%s\n",ret); 进阶用法: for(ret = strtok(tmp,p);ret != NULL;ret = strtok(NULL,p)) { printf("%s\n",ret); } }
函数功能:
- 返回错误码所对应的错误信息
- 必须包含头文件
//因为errno是一个全局变量,表示错误码;
- 例子:
int main() { printf("%s\n",strerror(0)); printf("%s\n",strerror(1)); printf("%s\n",strerror(2)); printf("%s\n",strerror(3)); printf("%s\n",strerror(4)); printf("%s\n",strerror(5)); - 使用方法: //以读的形式打开一个文件,打开失败会返回NULL FILE* pf = fopen("test.txt","r"); //因为我们没有创建test.txt文件,所以程序会报错,它就会生成一个错误码>errno(全局变量),而我们使用strerror()函数来查看程序报错信息; if(pf == NULL) { printf("%s\n",strerror(errno)); return 1;//表示程序结束,不继续执行 } fclose(pf);//关闭文件 pf = NULL; return 0; }
- 函数功能:
- 自动读取errno的值,并转换成相应的错误信息,并且打印错误信息
- strerror()函数,手动读取errno的值,不会打印错误信息;
- 对于字符串函数,我们往往只需要知道怎么用即可,而如果我们想进一步了解它们的实现原理,我们可以在安装Vs的文件夹里搜索相应的函数.c文件即可,它们都是库函数;
- 我们想要查找一些库函数可以使用的工具有:MSDN