C語言模擬實現字串操作函式

2021-08-04 07:53:23 字數 3223 閱讀 7877

在編寫程式過程中,我們經常使用到一些字串函式,例如求字串長度,拷貝字串……,這些函式都在c標準庫中存在,我們可以直接使用。但我們還需要掌握這些函式的實現方法,今天來看看一些常用的字串操作函式的實現方法

1. strlen

strlen是用來求字串長度的函式,字串長度就是字串中包含的字元的個數,但是不包含字串結尾的 『\0』

實現strlen有三種方法:

(1)定義乙個計數器

size_t mystrlen(const char* str)

return

count;

}

(2)遞迴版本

size_t my_strlen(const

char *str)

(3)利用指標 - 指標

size_t mystrlen(const

char* str)

2.strcpy

用於複製字串的函式是strcpy,它的原型如下:

char* strcpy ( char* dest, const

char* src );

使用這個函式時,要注意幾點

(1)目標字元陣列的空間必須足夠大,足以容納需要複製的字串

(2)目標字元陣列要可以被修改

(3)被複製的字串要可以找到』\ 0』

char *mystrcpy(char *dest, const

char *src)

3.strcat

strcat函式是可以把乙個字串新增(連線)到另乙個字串的後面。strcat函式要求dest引數原先已經包含了乙個字串(可以是空字串)。它找到這個字串的末尾,並把src字串的乙份拷貝新增到這個位置。

char *mystrcat(char *dest, const

char *src)

4.strcmp

strcmp用於比較兩個字串,及對兩個字串對應的字元逐個進行比較,直到發現不匹配。那個最先不匹配的字元中較「小」的那個字元所在的字串被認為「小於」另外乙個字串。如果其中乙個字串是另外乙個字串的前面一部分,那麼它也被認為「小於」另外乙個字串,因為它的』\0』出現的更早。

int my_strcmp(const char* src1, const char* src2)

return

*src1 - *src2;

}

5.strstr

為了在乙個字串中查詢乙個子串,可以使用strstr函式,該函式是在s1中查詢整個s2第1次出現的起始位置,並返回乙個指向該位置的指標。如果s2並沒有出現在s1的任何地方,函式將返回乙個null指標。如果第二個函式是乙個空字串,函式就返回s1。

char* my_strstr(char* s1, const

char* s2)

if (*q == '\0')

return cur;

p = cur + 1;

q = s2;

}return null;

}

6.strchr

strchr是用來查詢乙個特定的字元,在字串str中查詢字元ch第一次出現的位置,找到後函式返回乙個指向該位置的指標。如果該字元並不存在於字串中,函式就返回乙個null指標

char* my_strchr(const

char* str, char ch)

return null;

}

7.strrchr

與strchr類似的查詢函式還有乙個是strrchr,它和strchr的不同之處在於,該函式返回的是乙個指向字串中該字元最後一次出現的位置

char* my_strrchr(const

char* str, int ch)

str++;

}if (pos != 0)

else

return null;

}

長度受限制的字串函式

標準庫中還包含一些函式,它們以一種不同的方式去處理字串。這些函式接受乙個顯示的長度引數,用於限定進行複製或比較的字元數。

1.strncpy

和strcpy一樣,strncpy()函式把源字串的字元複製到目標空間,但是,它總是正好向dest中拷貝len個字元,如果strlen的(src)的值小於len,dest陣列就用額外的』\0』填充到len位元組長度。如果strlen的(src)的值大於或等於len,那麼只有len個字元被複製到目標暫存器中。

char* my_strncpy(char* dest, const

char* src, size_t len)

if (*(res) != '\0')

*res = '\0';

return dest;

}

2.strncat

strncat函式,它從src中最多複製的len個字元到目標陣列的後面。

char* my_strncat(char* dest, const

char* src, size_t len)

return res;

}

3.strncmp

strncmp也用於比較兩個字串,但它最多比較len個位元組。如果兩個字串在第len個字元之前存在不相等的字元,這個函式就像的strcmp一樣停止比較,返回結果。如果兩個字串的前len個字元相等,函式就返回零。

int my_strncmp(const

char* s1, const

char* s2, size_t len)

else

return *s1 - *s2;

}return

0;}

標準庫里的字串函式還有很多,今天就先介紹到這裡。

c語言 模擬實現字串函式

1.strcpy實現字串的拷貝 char my strcpy char dest,const char src return temp 2.strcat實現字串的連線 char my strcat char arr,const char src while arr src return temp 3...

字串操作函式的模擬實現

包含一些應試需要注意的細節,希望能夠幫助到大家。感受一下,在字串操作函式中,需要注意的還是要判斷引數是否為空。做判斷時,使用assert 斷言,其用法在下文注釋中標註。再加上指標的簡單應用,其模擬也不難實現。include include strlen 第一種 int my strlen const...

模擬實現C語言中的字串函式

1 int strcmp const char dest,const char str 字串比較函式,比較字串dest和str,當dest str時,返回值 0 當dest 模擬實現 include includeint mystrcmp const char dest,const char str...