一、计算字符串长度
1.检索字符串是否以'\0'结尾-指针
int strleng(char* str) {
char* start = str;
while (*str != '\0')
{
str++;
}
return str-start;
}
2.检索字符串是否以'\0'结尾-数组
int strleng(char str[],int sz) {
int count = 0;
for (int i = 0; i < sz; i++)
{
if (str[i] != '\0')
{
count++;
}
}
return count;
}
int main() {
char arr[] = "abcde";
int sz = sizeof(arr) / sizeof(arr[0]);
printf("%d\n", strleng(arr, sz));
}
3.通过递归-没有创建临时变量
int strleng(char * p) {
if (*p != '\0')
{
return 1 + strleng(p + 1);
}
else
{
return 0;
}
}
二、复制字符串
1.简易复制字符串
void strcopy(char * dest,char * src) {
//src为要复制数组的内容 dest为复制后存放的地方
while (*src != '\0')
{
*dest = *src;
dest++;
src++;//这三行可以改成*dest++ = *src++;
}//实现数组的内容的复制,不包括'\0'
*dest = *src;//将'\0'复制到dest里
}
2.优化
//从实际来说,src指向的内容不该被修改,所以src加了const修饰
//增加了返回值
char* strcopy(char * dest,const char * src) {
assert(src !=NULL);//dest跟src不能为空地址
assert(dest != NULL);
char * res = dest;
while (*dest++ = *src++)
{
}
return res;//不能return dest;因为如果返回的话是'\0'
}