C 基礎 常見的str 函式

2021-06-27 09:38:12 字數 2762 閱讀 4149

str-的函式以前總是困擾著我,在這裡稍作下總結。

1,庫函式strlen:計算字串的長度。

原型:size_t strlen( char const *string );

/* 計算字串的長度 */

#include size_t strlen( char const *string )

注意:strlen返回的是乙個型別為size_t的值,這個型別是在標頭檔案stddef.h中定義的,它是乙個無符號整數型別。在表示式中使用無符號數可能導致不可預料的結果,例如

if( strlen ( x ) >= strlen ( y ) )...

if( strlen( x ) - strlen ( y ) >= 0 )...

第一條語句按照你預想的那樣工作,但第二條語句的結果將永遠是真。

2,不受限制的字串函式。

最常見的字串函式都是「不受限制」的,就是說他們只是通過尋找字串引數結尾的nul位元組來判斷它的長度。

(1)strcpy函式:複製字串。原型如下:

char *strcpy( char *dst, char const *src );

(2)strcat函式:連線字串。原型如下:

char *strcat( char *dst, char const *src );

strcpy( message, "hello " );

strcat( message, customer_name );

strcat( message, ", how are you?" );

輸出結果就是字串:hello jim, how are you?( customer_name = "jim"; ) 

(3)strcmp函式:字串比較。原型如下:

int strcmp( char const *s1, char const *s2 );

如果s1小於s2,strcmp函式返回乙個小於零的值;如果s1大於s2,函式返回乙個大於零的值;如果兩個字串相等,函式就返回零。

注意:我們常常容易編寫這樣的**:if( strcmp( a,b ) )。

其實,把這個返回值作為布林值進行乙個測試是一種壞風格,因為它有三種截然不同的結果,所以,更好的方法是把這個返回值與零進行比較,例如:if( strcmp( a,b ) ==0 )。

3,長度受限的字串函式。

char *strncpy( char *dst, char const *src, size_t len );
char *strncat( char *dst, char const *src, size_t len );
char *strncmp( char const *s1, char const *s2, size_t len );

4,查詢。

(1)查詢乙個字元。

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

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

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

strrchr的功能與strchr基本一致,只是它返回的是乙個指向字串中該字元最後一次出現的位置(最右邊的那個)。

char string[20] = "hello there, honey.";

char *ans;

ans = strchr( string, 'h' );

ans所指向的位置將是string+7。

(2)查詢乙個字串字首。

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

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

group字串指定乙個或多個字元。strspn返回str起始部分匹配group中任意字元的字元數。

int len1,len2;

char buffer = "25,142,330,smith,j,239-4123";

len1 = strspn( buffer, "0123456789" );

len2 = strspn( buffer, ",0123456789" );

結果為:len2為2,len2為11。

strcspn函式和strspn函式正好相反,它對str字串起始部分中不與group中任何字元匹配的字元進行計數。

(3)查詢標記。

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

sep引數是個字串,定義了用作分隔符的字元集合。第乙個引數指定乙個字串,它包含零個或多個有sep字串中乙個或多個字元分隔符分隔的標記。strtok找到str的下乙個標記,並將其用null結尾,然後返回乙個指向這個標記的指標。

/* 從乙個字元陣列中提取空白字元分隔的標記並把它們列印出來 */

#include #include void print_tokens( char *line )

5,錯誤資訊。

char *strerror( int error_number );

strerror函式把其中乙個錯誤**作為引數並返回乙個指向用於描述錯誤的字串的指標。

C語言str函式系列

1 strcat 此函式原型為 char strcat char dest,const char src 功能為連線兩個字串,把src連線到dest後面 返回dest位址 實現如下 char strcat char dest,const char src while dest src return ...

C語言str 函式系列

char strcat char dest,const char src while dest src return addr 2 strcmp intstrcmp const char str1,const char str2 return str1 str2 3 strcpy char strc...

Python基礎 repr函式和str的區別

3 總結 在 python 中要將某一型別的變數或者常量轉換為字串物件通常有兩種方法,即 str 或者 repr 函式str 用於將值轉化為適於人閱讀的形式,而repr 轉化為供直譯器讀取的形式 如果沒有等價的語法,則會發生syntaxerror 異常 適合開發和除錯階段使用。number 1234...