字串操作函式

2021-08-01 19:16:58 字數 3223 閱讀 7897

定義

字串就是一串零個或多個字元,並且以乙個位模式為全0的null位元組結尾。因 此,字串所包含的字元內部不能出現null位元組。字串是一種重要的資料型別,但是c語言並沒有顯示的字串資料型別,這是因為字串以字串常量的形式出現或儲存於字元陣列中。

字串長度函式strlen( const char *str)

size_t  my_strlen(const char *str)

return

count;

}int main()

​注意:strlen()函式的返回值為size_t, 實際上是unsigned int 。永遠為大於0的值。有時候需要強制型別轉換。

不受限制的字串函式

1.複製字串函式strcpy(char *dst ,char const*src)

功能:將引數src字串複製到dst引數。以字元null結尾。

char * my_strcpy(char*dst, char*src)

return dst;

}int main()

; my_strcpy(arr,"the road is tortuous" );

printf("%s\n",arr);

return

0;}

​注意:

<1>.必須保證目標字元陣列的空間足夠容納需要複製的字串。

<2>.源空間必須以』\0』結束,否則程式發生崩潰。

<3>.將char*作為函式返回值是為了更好的實現鏈式訪問。

2.連線字串函式strcat(char *dst,char const *src)

功能:將引數 src 字串複製到引數 dest 所指的字串尾部;dest 最後的結束字元 null 會被覆蓋掉,並在連線後的字串的尾部再增加乙個 null。

char * my_strcat(char *dst, const

char *src)

return start;

}int main()

​注意:必須保證目標字元陣列的剩餘空間足夠儲存整個的源字串,不能出現重疊。

3.字串比較函式strcmp(char const *s1,char const *s2)

功能:比較兩個字串s1,s2的大小,如果s1s2,函式返回乙個大於零的值;s1=s2,則返回零值。

int my_strcmp(char* s1, char* s2)

return

*s1 - *s2;

}int main()

​注意:

<1>.c標準沒有規定用於提示不相等的具體值,只規定大於零的值,小於零的值,等於零的值。

<2>.必須以乙個null位元組結尾,如果沒有,那比較結果將毫無意義。

長度受限的字串函式

1.strncpy( const *dst ,char const *src ,size_t len)

​和strcpy()函式一樣,把源字串的字元複製到目標陣列。它是向dst寫入len個字元。如果strlen(src)的值小於len,dst陣列就用額外的null位元組填充到len長度。大於就正常複製到dst中。​它的結果將不會以null位元組結尾。

char* my_strncpy(char *dst, const

char *src, int len)

if (len> 0)

}return copy;

}int main()

; int len = strlen("hahh");

printf("%s\n", my_strncpy(string, "hahh", len));

return

0;}

2.strncat( const *dst ,char const *src ,size_t len)

​strncat()是從src中最多複製len個字元到目標陣列的後面。但是,它總是在結果字串後面新增乙個null位元組。不考慮目標引數除去原先存在的字串之後留下的空間是否足夠。

char* my_strncat(char *dst, const char *src, int len)

while (len&& *src)

*dst = '\0';

return cat;

}int main()

3.strncmp( char const *s1 ,char const *s2 ,size_t len)

​它最多比較len個位元組,如果在第len個字元之前存在不相等字元,停止比較;返回結果。否則返回零。

int  my_strcnmp(char* s1, char* s2,size_t  len) 

return

*s1 - *s2;

}int main()

字串查詢函式1.查詢乙個字元

char *strchr(char const *str ,int ch) ;

char *strrchr(char const *str ,int ch);

它們的第二個引數是乙個整形值,在str中查詢ch第一次出現的位置,找到後返回乙個指向該位置的指標。否則返回null指標.

2.查詢任何幾個字元

char *strpbrk(char const*str,char const *group);

返回乙個指向str中第乙個匹配group中任何乙個字元的字元位置,沒找到,返回null指標

3.查詢乙個子串

char *strstr(char const *s1,char const *s2);

在s1中查詢s2第一次出現的起始位置,並返回乙個指向該位置的指標。如果s2沒有完整出現在s1的任何地方,函式將返回乙個null指標。s2若是乙個空字串,則函式返回s1。

4.查詢標記

char *strtok(char *str,char const *sep);

功能:分解字串為一組標記串。str為要分解的字串,sep為分隔符字串集合。

int main()

return

0;}

字串操作函式

char cdecl strcat char dst,const char src wchar t cdecl wcscat wchar t dst,const wchar t src char cdecl strcpy char dst,const char src wchar t cdecl w...

字串操作函式

字串主要是了解標準庫中的函式的用法及注意事項 1 strlen char const str 函式的返回值型別為size t,這個型別是在標頭檔案stddef.h中定義的,它是乙個無符號整型型別,注意這點兒很重要,例如下面的判斷語句將永遠返回真 if strlen str1 strlen str2 ...

字串操作函式

1.strlen 計算字串長度 int strlen const char string 2.strcpy 字串拷貝.char strcpy char destination,const char source 3.strcat 字串的連線.char strcat char target,const...