C語言:字符函數和字符串函數 c語言字符串常用函數


本文主要分享【c語言字符串常用函數】,技術文章【C語言:字符函數和字符串函數】為【傻響】投稿,如果你遇到C相關問題,本文相關知識或能到你。

c語言字符串常用函數

😀求字符串長度

🤐strlen

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

🤐strcpy

🤐strcat

🤐strcmp

😀長度受限制的字符串函數介紹

🤐strncpy

🤐strncat

🤐strncmp

😀字符串查找

🤐strstr

🤐strtok

😀錯誤信息報告

🤐strerror

🤐字符分類函數:

😀字符操作內存操作函數

🤐memcpy

🤐memmove

🤐memcmp

🤐memset


                                                  

😀求字符串長度 🤐strlen

size_t strlen ( const char * str );

字符串已經 '\0' 作為結束標志,strlen函數返回的是在字符串中 '\0' 前面出現的字符個數(不包含 '\0' )。參數指向的字符串必須要以 '\0' 結束。注意函數的返回值為size_t,是無符號的( 易錯 )

問題舉例1:(參數指向的字符串必須要以 '\0' 結束)

問題舉例2:(注意函數的返回值為size_t,是無符號的( 易錯 ))

學會模擬實現 - strlen

學會模擬實現 - strlen()(使用指針減去指針的方式進行統計)

學會模擬實現 - strlen()(使用遞歸的方式進行統計)

😀長度不受限制的字符串函數 🤐strcpy

char* strcpy(char * destination, const char * source );

將源指向的C字符串復制到目標指向的數組中,包括終止空字符(並在此停止)

源字符串必須以 '\0' 結束。會將源字符串中的 '\0' 拷貝到目標空間。目標空間必須足夠大,以確保能存放源字符串。目標空間必須可變。

問題舉例1:(源字符串必須以 '\0' 結束) (會將源字符串中的 '\0' 拷貝到目標空間)

問題舉例1:(目標空間必須足夠大,以確保能存放源字符串)

學會模擬實現 - strcpy

學會模擬實現 - 進行簡化

🤐strcat

char * strcat ( char * destination, const char * source );

將源字符串的副本追加到目標字符串。終止空字符在destination中被源的第一個字符覆蓋,並且包含一個空字符在新字符串的末尾,

將兩者連接在destination中形成。

源字符串必須以 '\0' 結束。目標空間必須有足夠的大,能容納下源字符串的內容。目標空間必須可修改。字符串自己給自己追加。

錯誤代碼和上面strlen是一個概念這里就不寫了。

正確代碼書寫方式:

學會模擬實現 - strcat

🤐strcmp

int strcmp ( const char * str1, const char * str2 );

這個函數開始比較每個字符串的第一個字符。如果它們相等其他情況下,它繼續使用以下對,直到字符不同或終止達到零字符

標准規定:

第一個字符串大於第二個字符串,則返回大於0的數字第一個字符串等於第二個字符串,則返回0第一個字符串小於第二個字符串,則返回小於0的數字

問題舉例1:

正確書寫方式:

學會模擬實現 - strcmp

學會模擬實現 - strcmp

😀長度受限制的字符串函數介紹 🤐strncpy

char * strncpy ( char * destination, const char * source, size_t num );

將源的第一個num字符復制到目標。如果源C字符串的結尾(由空字符表示)在復制num字符之前找到,

Destination使用零填充,直到總共寫入了num個字符

拷貝num個字符從源字符串到目標空間。如果源字符串的長度小於num,則拷貝完源字符串之后,在目標的后邊追加0,直到num個。

🤐strncat

char * strncat ( char * destination, const char * source, size_t num );

將源的第一個num字符附加到目標,再加上一個終止的空字符。如果源文件中C字符串的長度小於num,則只包含直到終止的內容

null字符復制

🤐strncmp

int strncmp ( const char * str1, const char * str2, size_t num );

比較到出現另個字符不一樣或者一個字符串結束或者num個字符全部比較完。 第一個字符串大於第二個字符串,則返回大於0的數字第一個字符串等於第二個字符串,則返回0第一個字符串小於第二個字符串,則返回小於0的數字

😀字符串查找 🤐strstr

char * strstr ( const char *str1, const char * str2);

返回一個指向str1中第一個出現的str2的指針,如果str2不是str1的一部分,則返回一個空指針str1。

學會模擬實現 - strstr()

🤐strtok

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

sep參數是個字符串,定義了用作分隔符的字符集合第一個參數指定一個字符串,它包含了0個或者多個由sep字符串中一個或者多個分隔符分割的標記。strtok函數找到str中的下一個標記,並將其用 \0 結尾,返回一個指向這個標記的指針。(注:strtok函數會改變被操作的字符串,所以在使用strtok函數

切分的字符串一般都是臨時拷貝的內容並且可修改。)

strtok函數的第一個參數不為 NULL ,函數將找到str中第一個標記,strtok函數將保存它在字符串中的位置。strtok函數的第一個參數為 NULL ,函數將在同一個字符串中被保存的位置開始,查找下一個標記。如果字符串中不存在更多的標記,則返回 NULL 指針。

strtok的正確使用方式:

strtok的正確使用 - 優化

😀錯誤信息報告 🤐strerror 返回錯誤碼,所對應的錯誤信息。

🤐字符分類函數:

函數

如果他的參數符合下列條件就返回真

iscntrl

任何控制字符

isspace

空白字符:空格‘ ’,換頁‘\f’,換行'\n',回車‘\r’,制表符'\t'或者垂直制表符'\v'

isdigit

十進制數字 0~9

isxdigit

十六進制數字,包括所有十進制數字,小寫字母a~f,大寫字母A~F

islower

小寫字母a~z

isupper

大寫字母A~Z

isalpha

字母a~z或A~Z

isalnum

字母或者數字,a~z,A~Z,0~9

ispunct

標點符號,任何不屬於數字或者字母的圖形字符(可打印)

isgraph

任何圖形字符

isprint

任何可打印字符,包括圖形字符和空白字符

😀字符操作內存操作函數 🤐memcpy

void * memcpy ( void * destination, const void * source, size_t num );(內存塊的拷貝)

函數memcpy從source的位置開始向后復制num個字節的數據到destination的內存位置。這個函數在遇到 '\0' 的時候並不會停下來。如果source和destination有任何的重疊,復制的結果都是未定義的。

memcpy的正確使用方式:

學會模擬實現 - memcpy()

🤐memmove

void * memmove ( void * destination, const void * source, size_t num );

和memcpy的差別就是memmove函數處理的源內存塊和目標內存塊是可以重疊的。如果源空間和目標空間出現重疊,就得使用memmove函數處理。

memmove的正確使用方式:

學會模擬實現 - memmove()

首先我們畫圖分析一下:如何才能正確的進行拷貝:

代碼實現:

🤐memcmp

void * memcpy ( void * destination, const void * source, size_t num );

函數memcpy從source的位置開始向后復制num個字節的數據到destination的內存位置。這個函數在遇到 '\0' 的時候並不會停下來。如果source和destination有任何的重疊,復制的結果都是未定義的。

memcmp的正確使用方式:

🤐memset

void * memset ( void * ptr, int value, size_t num );

將ptr指向的內存塊的第一個num字節設置為指定的值(解釋為unsigned char)

memset的正確使用方式:

本文《C語言:字符函數和字符串函數》版權歸傻響所有,引用C語言:字符函數和字符串函數需遵循CC 4.0 BY-SA版權協議。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: