一、字符串操作<string.h>
size_t strlen(char const* s);
注意:返回值類型size_t是無符號(hào)類型,和int進(jìn)行運(yùn)算或比較時(shí)需要注意;
char* strcpy(char* dst,char const* src);
將src復(fù)制到dst,需保證dst有足夠容納src的空間,防止溢出,返回dst。若dst和src重疊,結(jié)果未定義
char* strcat(char* dst,char const* src);
將src復(fù)制到dst后面,需保證空間充足,返回dst
int strcmp(char const* s1,char const* s2);
逐個(gè)比較s1,s2中字符的大小,s1<s2返回負(fù)數(shù),s1>s2返回正數(shù),
想等返回0。不相等時(shí)返回的不一定是-1和1,故返回值只能用來和0比較
char* strncpy(char* dst,char const* src,size_t len);
類似strcpy,全部復(fù)制。src長(zhǎng)度小于len時(shí),后面用NUL補(bǔ)全,否則不會(huì)在末尾自動(dòng)添加NUL,重疊未定義
char* strncat(char* dst,char const* src,size_t len);
類似strcat,最多復(fù)制len個(gè)字符,結(jié)尾自動(dòng)添加NUL
int strncmp(char const* s1,char const* s2);
只比較前n位
char* strchr(char const* str,int ch);
返回ch在str中第一次出現(xiàn)的地址
char* strrchr(char const* str,int ch);
最后一次出現(xiàn)
char* strpbrk(char const* str,char const* group);
group中任意一個(gè)字符在str中第一次出現(xiàn)的地址
char* strstr(char const* s1,char const* s2);
子串s2在s1中第一次出現(xiàn)的地址
size_t strspn(char const* str,char const* group);
匹配計(jì)數(shù)
size_t strcspn(char const* str,char const* group);
不匹配計(jì)數(shù)
char* strtok(char* str,char const* sep);
分割,標(biāo)記。注意會(huì)改變字符串,會(huì)保存參數(shù)的局部狀態(tài)信息,不能同時(shí)解析多個(gè)字符串。
使用示例:
void print_tokens( char *line ) { static char whitespace[] = " \t\f\r\v\n"; char *token; for( token = strtok( line, whitespace ); token != NULL; token = strtok( NULL, whitespace ) ) printf( "Next token is %s\n", token ); }
char* strerror(int error_number);
接收錯(cuò)誤碼作為參數(shù),返回指向描述錯(cuò)誤信息的字符串的指針
二、字符操作<ctype.h>
函數(shù) | 滿足條件返回真 |
isdigit | 十進(jìn)制數(shù)字0~9 |
isxdigit | 十六進(jìn)制數(shù)字,0~9,a~f,A~F |
isupper | 大寫字母A~Z |
islower | 小寫字母a~z |
isalpha | 英文字母a~z,A~Z |
isalnum | 字母或數(shù)字a~z,A~Z,0~9 |
ispunct | 標(biāo)點(diǎn),不屬于字母或數(shù)字的圖形字符 |
isgraph | 圖形字符 |
isprint | 可打印字符 |
isspace | 空白字符 |
iscntrl | 控制字符 |
int tolower(int ch) | 轉(zhuǎn)小寫 |
int toupper(int ch) | 轉(zhuǎn)大寫 |
使用ctype庫(kù)函數(shù)判斷字符類型可提高可移植性
三、內(nèi)存操作
void* memcpy(void* dst,void const* src,size_t len);
重疊未定義
void* memmove(void* dst,void const* src,size_t len);
能正確處理dst和src重疊的情況
int memcmp(void const* a,void const* b,size_t len);
void* memchr(void const* a,int ch,size_t len);
void* memset(void* a,int ch,size_t len);
把a(bǔ)開始的len個(gè)字節(jié)初始化為ch
C語(yǔ)言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語(yǔ)言學(xué)練課程
解決困擾你多年的C語(yǔ)言疑難雜癥特性的C語(yǔ)言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語(yǔ)法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程