1. 程式人生 > >linux環境C開發系列1-一些函式

linux環境C開發系列1-一些函式

隨感:

時隔1個月,繼續寫部落格。這期間進入了新行業、開始了新工作,進入了新環境,接觸到新的氛圍、工作方式和人群,一直在花時間在調整自己的狀態以適應,所以沒有更新!
最近想來想去,覺得還是需要繼續將這個系列寫下去,為了總結自己的過去,也為了自己的興趣。

正文

這篇主要是之前學習linux環境下C開發時接觸到的一些字元和記憶體操作函式。字元類的函式在使用的時候需要注意字串的‘\0’結束符,以避免使用函式過程中出現緩衝區溢位的情況;記憶體函式需要注意記憶體函式能否同一個記憶體區域內操作,以避免發生異常行為。

常用函式 作用
size_t strlen(const char *s) 返回字串s的長度,不包括結束符
char *strerror(int errornum) 返回詳細描述errornum的文字字串指標
char *strchr(const char *s,char c) 查詢c所代表的字元在字串s中首次出現的位置,成功則返回對應指標,失敗返回NULL
char *strrchr(const char *s,char c) 查詢c所代表的字元在字串s中最後出現的位置,成功則返回對應指標,失敗則返回NULL
size_t strcspn(const char *s1,const char *s2) 計算並返回字串s1中不包含任何s2中字元的起始段長度
size_t strspn(const char *s1,const char *s2) 計算並返回字串s1中只包含s2中字元的起始段長度
char *strpbrk(const char *s1,const char *s2) 計算字串s2中任意字元在s1中出現的首位地址,成功則返回指標,失敗則返回NULL
char *strstr(const char *s1,const char *s2) 查詢s2在s1中首次出現的位置
char *strtok(char *s1,const char *s2) 用s2將字串s1分割成一系列標號
int strcmp(const char *s1,const char *s2) 比較s1和s2,逐個比較字串中字元,直到出現大小
intstrncmp(const char *s1,const char *s2,int n) 比較字串s1和s2的前n個字元
char *strcpy(char *s1,const char *s2) 將字串s2拷貝到字串s1中,注意緩衝區溢位!
char *strncpy(char *s1,const char *s2,int n) 將字串s2的前n個字元拷貝到字串s2中,注意緩衝區溢位以及新字串的結束符
char *strcat(char *s1,const char *s2) 將s2的字串追加到s1中
char *strncat(char *s1,const char *s2,int n) 將s2的前n個字元追加到s2中
========================== ===================
void *memcpy(void *s1,const void *s2,size_t n) 將記憶體塊s2內的n個字元複製到s1中,注意該函式不能用於s1和s2不能有重疊區域,否則會有異常行為!
void *memmove(void *s1,const void *s2,size_t n) 將記憶體塊s2內的n個字元複製到臨時空間中,再複製到s1中
int memcmp(const void *s1,const void *s2,size_t n) 將s1和s2的前n個字元進行比較大小並返回結果
void *memchr(const void *s1,int c,size_t n) 在s1的前n個字元在紅查詢字元c的位置,成功則返回指標,失敗則NULL
void *memset(void *s1,int c,size_t n) 將c複製到記憶體塊s1的前n個位置,並返回指標