<td id="aqqih"></td>

<dd id="aqqih"></dd>
  1. <span id="aqqih"></span>
  2. <ol id="aqqih"></ol>

    C語言的strlen函數怎么使用

    今天小編給大家分享一下C語言的strlen函數怎么使用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    C語言中的字符串函數有如下這些

    • 獲取字符串長度

      • strlen

    • 長度不受限制的字符串函數

      • strcpy

      • strcat

      • strcmp

    • 長度受限制的字符串函數

      • strncpy

      • strncat

      • strncmp

    • 字符串查找

      • strstr

      • strtok

    • 錯誤信息報告

      • strerror

    接下來看看如何實現它們

    獲取字符串長度

    strlen

    我們看看文檔是怎樣說的,如下

    strlen文檔

    size_t?strlen?(?const?char?*?str?);

    Get string length

    獲取字符串長度

    Returns the length of the C string?str.

    返回C字符串str的長度

    The length of a C string is determined by the terminating null-character: A?C string?is as long as the number of characters between the beginning of the string and the terminating null character (without including the terminating null character itself).

    C字符串長度是由'\0'來確定的,也就是說從字符串的第一個開始只要遇到'\0'就結束長度計算(不包含'\0')

    This should not be confused with the size of the array that holds the string. For example:

    不用困惑你創建的數組的大小,比如這樣

    char?mystr[100]="test?string";

    defines an array of characters with a size of 100?chars, but the C string with which?mystr?has been initialized has a length of only 11 characters. Therefore, while?sizeof(mystr)?evaluates to?100,?strlen(mystr)?returns?11.

    定義一個大小為100的數組mystr,然后mystr?就已經被初始化為一個長度為11的字符串了。所以呢,?sizeof(mystr)?會得出?100, 而strlen(mystr)?會返回?11.

    綜上,可以知道

    1. 字符串已經 '\0' 作為結束標志,strlen函數返回的是在字符串中 '\0' 前面出現的字符個數(不包含 '\0' )。

    2. 該函數只認'\0',參數指向的字符串必須要以 '\0' 結束。

    3. 注意函數的返回值為size_t,是無符號的

    實現

    strlen函數的實現有好幾種。

    比如

    1. 計數器的方法

    2. 遞歸

    3. 指針 - 指針

    接下來一一實現。

    1. 計數器:使用一個變量來記錄 - count

    斷言指針不為空是個好習慣~

    int?my_strlen(char*?str)?
    {
    	int?count?=?0;
    	assert(str?!=?NULL);
    	while?(*str?!=?'\0')?//?while?(*str)
    	{
    count++;
    str++;
    	}
    	return?count;
    }

    就一直找'\0',當*str不是'\0'時,就count++,str++,直到遇到'\0'停止,然后返回count就是長度了。

    2. 遞歸

    斷言指針不為空是個好習慣~

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

    比如傳入的str地址為 1000

    那么 1 + my_strlen(p + 1) 中,p + 1,指針偏移后就是1001,以此類推。

    1 + 1 + my_strlen(p + 1)

    1 + 1 + 1 + my_strlen(p + 1)

    1 + 1 + 1 + 1 + my_strlen(p + 1)

    ...

    1 + 1 + 1 + 1 + ... + 0

    最終就可以得出長度。

    3. 指針-指針

    斷言指針不為空是個好習慣~

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

    把指針str的地址賦值給一個新的指針p,str作為指向起始地址的指針,不改變它,記錄起始地址。

    然后通過指針p進行查找'\0',判斷當前字符是否為'\0',不是就進行p++,然后繼續判斷下一個字符,如此循環,直到指針p找到'\0',然后用?當前的指針p?減去?起始指針str?進行返回,就是長度了。

    以上就是“C語言的strlen函數怎么使用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注蝸牛博客行業資訊頻道。

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:niceseo99@gmail.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    評論

    日本韩欧美一级A片在线观看
    <td id="aqqih"></td>

    <dd id="aqqih"></dd>
    1. <span id="aqqih"></span>
    2. <ol id="aqqih"></ol>