linux環境C開發系列1-一些函式
阿新 • • 發佈:2019-01-29
隨感:
時隔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個位置,並返回指標 |