1. 程式人生 > >C語言中求字串長度的函式my_strlen()的幾種實現方法

C語言中求字串長度的函式my_strlen()的幾種實現方法

C語言中求字串長度的函式的幾種實現方法

1.最常用的方法是建立一個計數器,判斷是否遇到‘\0’,不是’\0’指標就往後加一。

int my_strlen(const char *str)
{
    assert(str != NULL);//此句判段str是否為空指標(事實上這條語句可以省略)
    /*assert()其實是一個在<assert.h>中定義的巨集;
     當assert後面括號內的表示式為真時,程式悄無聲息執行下一條;
     為假時,宣判程式“死刑”*/
    int count = 0;    
    while (*str != '\0')
{ count++; str++; } return count; }

2.不建立計數器,從前向後遍歷一遍,沒有遇到‘\0’就讓指標向後加一,找到最後一個字元,記下來地址,然後用最後一個字元的地址減去起始地址,就得到了字串的長度。

int my_strlen(const char *str){    
	char *end = str;    
	assert(str!=NULL);    
	assert(end!=NULL);    
	while (*end != '\0')    
	{
end++; } return end - str; }

3.不建立計數器,遞迴實現。

int my_strlen(const char *str)
{
    assert(str != NULL);    
    if (*str == '\0')    
    {        
    return 0;    
    }    
    else    
    {        
    return (1 + my_strlen(++str));    
    }
}

也可以寫成這樣:

int my_strlen(const
char *str){ assert(str != NULL); return (*str == '\0') ? 0 : (my_strlen(++str) + 1); }

或者這樣:

int my_strlen(const char *str){    
	assert(str != NULL);    
	return (*str == '\0') ? 0 : (my_strlen(str+1) + 1);
}

如果大家有更多方法,歡迎在下面評論。