函数
strlen函数,求字符串长度
找到\0的时候停止,\0是不计入长度计算的。
#include<stdio.h>
int main()
{
int len = strlen("abcdef");//找到\0就停止,\0是不计入的
pritnf("%d",len);
return 0;
}
但是如果是单个字符的情况。
#include<stdio.h>
int main( )
{
char arr[ ] = {'a','b','c','d','e','f'};
int len = strlen(arr);
printf("%d",len);
return 0;//这个时候,输出的数就是一个随机值。因为找不到 \0 所在的位置
}
求出这个字符串的长度有三种方法,1计数器 2递归 (不创建临时变量去求字符串长度) 3指针-指针(元素个数)
这里介绍计数器的方法(count)
#include<stdio.h>
#include<assert.h>//断言的头文件
int my_strlen(const char* str)//这个只是求字符串的长度,不能改变这个字符串,所以要加一个const来给它固定
{
int count = 0;
assert(str != NULL);//这里传递的是指针,就不能传递的是空指针,所以有一个不等于空指针的断言
while (*str != 0)//相当于while(*str)是指str为真的意思
{
count++;
str++;//开始指向下一个字符串里的数
}
return count;//把count传到main函数里面的len里
}
int main()
{
int len = my_strlen("abcdef");
printf("%d", len);
return 0;
}
if(strlen("abc") - strlen("abcdef') > 0)
{
printf("hehe");
}
else
{
printf("haha");
}
return 0;//最后的结果是hehe, 因为strlen的返回类型是size_t是无符号的形式
strcpy函数(字符串拷贝)
#include<stdio.h>
#include<assert.h>
my_strcpy(char*dest,char*src)
{
assert(dest != NULL);//这里用断言,如果出现括号中的情况会中终止程序,让程序更有规范性
assert(Src !=NULL);
while(*dest++ = *scr++)//先解引用再++
{
//当拷贝到‘\0’的时候,把0赋值给了dest,while语句的判断条件变成了while(0) 为假,语句不再执行,刚刚好把'\0'的赋值形式也解决了
}
}
int main()
{
char arr1[ ] = "abcdefghi";
char arr2[ ] = "bit";
my_strcpy(arr1,arr2);//把arr2的内容传到arr1当中
printf("%s",arr10:
return 0;
}
#include<stdio.h>
#include<assert.h>
my_strcpy(char*dest,char*src)
{
assert(dest != NULL);//这里用断言,如果出现括号中的情况会中终止程序,让程序更有规范性
assert(Src !=NULL);
while(*src != '\0')
{
*dest = *src;//把第一个元素拷贝先
*dest++;
*src++;
}
*dest = *src;//这里拷贝的‘\0’因为拷贝要把src所有的都要拷贝过去,所以当src最后++的时候就是指向了‘\0’
}
int main()
{
char arr1[ ] = "abcdefghi";
char arr2[ ] = "bit";
my_strcpy(arr1,arr2);//把arr2的内容传到arr1当中
printf("%s",arr10:
return 0;
}
可以再精简一下
#include<stdio.h>
#include<assert.h>
my_strcpy(char*dest,char*src)
{
assert(dest != NULL);//这里用断言,如果出现括号中的情况会中终止程序,让程序更有规范性
assert(Src !=NULL);
while(*dest++ = *scr++)//先解引用再++
{
//当拷贝到‘\0’的时候,把0赋值给了dest,while语句的判断条件变成了while(0) 为假,语句不再执行
}
*dest = *src;//这里拷贝的‘\0’因为拷贝要把src所有的都要拷贝过去,所以当src最后++的时候就是指向了‘\0’
}
int main()
{
char arr1[ ] = "abcdefghi";
char arr2[ ] = "bit";
my_strcpy(arr1,arr2);//把arr2的内容传到arr1当中
printf("%s",arr10:
return 0;
}