strlen函式的簡單運用與模擬實作
strlen函式的簡單運用與模擬實作
- strlen函式的簡單使用
- strlen函式的三種模擬實作
- 使用臨時變數的方法
- 使用函式遞回的方法
- 使用指標相減的方法
strlen函式的簡單使用
strlen函式是用來計算字串長度的一個函式,回傳型別是size_t
#include<stdio.h>
#include<string.h>
int main()
{
char arr[] = "hello world";
size_t;//回傳值是size_t unsigned int
int len = strlen(arr);
printf("len=%d\n", len);
return 0;
}
下面就是對于回傳值型別是size_t的一個很形象的例子
int main()
{
const char* p1 = "abc";
const char* p2 = "adbcdef";
if (strlen(p1) - strlen(p2) > 0)
//因為回傳值是無符號數,所以沒有負數
{
printf("hehe");
}
else
{
printf("haha");
}
return 0;
}
strlen函式的三種模擬實作
使用臨時變數的方法
#include<stdio.h>
#include<assert.h>
//模擬實作strlen
size_t my_strlen(const char* str)
{
int count = 0;//計數器
assert(str != NULL);
//斷言不是空指標,如果沒有這步,當是空指標的時候可能會崩潰
while (*str != '\0')
{
count++;
str++;
}
return count;
}
int main()
{
char arr[] = "hello";
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}
使用函式遞回的方法
#include<stdio.h>
#include<assert.h>
//不使用臨時變數
size_t my_strlen(const char* str)
{
assert(str != NULL);
if (*str != '\0')
{
return 1 + my_strlen(str + 1);
}
else
{
return 0;
}
}
int main()
{
char arr[] = "hello";
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}
使用指標相減的方法
//指標相減的做法
size_t my_strlen(const char* str)
{
assert(str != NULL);
const char* start = str;
//str 不能初始化char型別,所以用const
while (*str != '\0')
{
str++;
}
return str - start;
}
int main()
{
char arr[] = "hello";
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/265868.html
標籤:其他
