C 字符/字符串常用函數

string.h中常用函數


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

從字符串str中查找首次出現字符ch的位置,若存在返回查找後的地址,若不存在則返回NULL

void main(){
	char a[100]="abcdefg";
	printf("%o\n",strchr(a,'f'));  //返回字符f的地址
	printf("%d\n",strchr(a,'f')-a); //返回字符f在字符串中的下標
}


char * strstr(char * str ,char *str2);

在字符串str中查找首次出現子串str2的位置,若存在返回查找後的地址,若不存在返回NULL

void main(){
	char a[100]="abcdefg";
	printf("%o\n",strstr(a,"defg"));  //查找是否包含“defg”, 若存在返回子串的地址
	printf("%o\n",strstr(a,"1234"));   //查找是否包含“1234”,不存在返回NULL
	printf("%d\n",strstr(a,"defg")-a); //返回字串第一個字符在源字符串中的下標
}


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

將字符串str1和str2中的各個字符按照ASCII依次比較大小,直到出現不同字符或者'\0'時爲止,返回值(1)當str1出現小於str2的字符時,返回值爲-1。(2)當str1出現大於str2的字符時,返回值爲1。(3)當str1與str2兩個字符串完全相同,則返回0。

void main(){
	char a[100]="ABCD";
	char b[100]="ABAB";
	char c[100]="ABcd";
	char d[100]="ABCD";
	printf("%d\n",strcmp(a,b)); //"ABCD"與"ABAB"比較C比A大,所以返回1
	printf("%d\n",strcmp(a,c)); //"ABCD"與"ABcd"比較C比c小,所以返回-1
	printf("%d\n",strcmp(a,d)); //兩者完全相同所以返回0
}

char * strrev(char * str); 

顛倒字符串str,並返回顛倒後的字符串地址。

void main(){
	char a[100]="abcdefg";
	printf("%s\n",strrev(a)); 
}


int strlen(char * str);

求字符串str的長度,不包括'\0'


char * strcat(char * des ,char *src);

將src字符串連接到des字符串的後面,並返回des字符串的首地址。連接前src和des後面都有'\0',連接時將des後面的'\0'取消掉,保留新串後面的'\0'

void main(){
	char a[100]="abcd";
	char b[100]="1234";
	printf("%s\n",strcat(a,b)); //將“1234”連接到"abcd"後面
}


char * strcpy(char *des,char *src);

將src字符串複製到des字符串中(包括'\0''),並返回des字符串的首地址。des的字符串要足夠長。

void main(){
	char a[100]="abcdefghi";
	char b[100]="1234";
	printf("%s\n",strcpy(a,b)); //將"1234"複製到"abcdefghi"中
}


char *strlwr(char *str);

將字符串str中的大寫字母轉換成小寫,不改變其他字符。返回轉換後的字符串首地址

void main(){
	char a[100]="ABCD";
	printf("%s\n",strlwr(a));
}


char *strupr(char *str);

將字符串str中的小寫字母轉換成大寫,不改變其他字符。返回轉換後的字符串首地址

void main(){
	char a[100]="abcd";
	printf("%s\n",strupr(a));
}


函數名中出現‘n'的情形:表示對字符串前n個字符進行處理

int strncmp(char *str1 ,char * str2,int n);

將字符串str2中的前n個字符與字符串str1進行比較,直到首次出現不同字符或者'\0'時爲止,若n大於str2的長度,則相當於strcmp(str1,str2)

void main(){
	char a[100]="abcd";
	char b[100]="abcdefg";
	printf("%d\n",strcmp(a,b)); //"abcd"小於"abcdefg"
	printf("%d\n",strncmp(a,b,4)); //"abcd"與"abcdefg"的前4個字符"abcd"比較
}


char * strncpy(char *des ,char *src , int n);

將src中的前n個字符複製到字符串或字符數組中(不自動加'\0')。若n大於src字符的長度,則複製整個src

void main(){
	char a[100]="abcdefg";
	char b[100]="1234";
	//printf("%s\n",strncpy(a,b,3)); // 123defg
	//printf("%s\n",strncpy(a,b,4)); // 1234efg
	//printf("%s\n",strncpy(a,b,5)); // 1234 ,相當於strcpy(a,b)
}

char * strncat(char *des ,char *src , int n);

將src中的前n個字符連接到des字符串中並在末尾加上'\0',若n大於src的長度,則連接整個src

void main(){
	char a[100]="abcdefg";
	char b[100]="1234";
	//printf("%s\n",strncat(a,b,2)); // abcdefg12
	//printf("%s\n",strncat(a,b,4)); // abcdefg1234
	//printf("%s\n",strncat(a,b,5)); // abcdefg1234
}


函數名中出現‘i'的情形:表示忽略大小寫

int stricmp(char * str1,char *str2);

功能同strcmp,但忽略大小寫

void main(){
	char a[100]="abcd";
	char b[100]="ABCD";
	printf("%d\n",strcmp(a,b)); //正常比較
	printf("%d\n",stricmp(a,b)); //忽略大小寫比較
}


函數名中同時出現'n'和'i':表示對字符串前n個字符,進行忽略大小寫的處理

int strnicmp(char * str1 ,char *str2);

將字符串str2中的前n個字符與字符串str1進行不區分大小寫的比較,直到首次出現不同字符或者'\0'時爲止。


ctype.h中的常用函數


int isalpha(char ch);
判斷字符ch是否爲字母,是字母返回非0(不一定是1),不是字母返回0
void main(){
	printf("%d\n",isalpha('a')); //測試返回值,a是字母所以返回非0
	printf("%d\n",isalpha('1')); //測試返回值,1不是字母所以返回0
}


int isalnum(char ch);
判斷字符ch是否是字母或數組,若是字母或數組返回非0(不一定是1),不是則返回0
void main(){
	printf("%d\n",isalnum('a')); 
	printf("%d\n",isalnum('1'));
	printf("%d\n",isalnum('+'));
}


int isdigit(char ch);
判斷字符ch是否爲數字,是數字返回非0(不一定是1),不是則返回0
void main(){
	printf("%d\n",isdigit('b')); 
	printf("%d\n",isdigit('1'));
	printf("%d\n",isdigit('+'));
}


int isupper(char ch);
判斷字符ch是否爲大寫

int islower(char ch);
判斷字符是否爲小寫
void main(){
	printf("%d\n",isupper('a'));  //判斷a是否是大寫字母
	printf("%d\n",isupper('A'));  //判斷A是否是大寫字母
	printf("%d\n",isupper('0'));  //判斷0是否是大寫字母

	printf("%d\n",islower('a'));  //判斷a是否是小寫字母
	printf("%d\n",islower('A'));  //判斷A是否是小寫字母
	printf("%d\n",islower('0'));  //判斷0是否是小寫字母
}


char tolower(char ch);
轉換爲小寫

char toupper(char ch);
轉換爲大寫
void main(){
	printf("%c\n",toupper('a'));  //a轉換爲大寫字母
	printf("%c\n",toupper('1'));  //1不是字母原樣返回
	printf("%c\n",tolower('A'));  //A轉換爲小寫字母
	printf("%c\n",tolower('1'));  //1不是字母原樣返回
}


int ispunct(char ch);
是否爲標點(除字母,數字和空格以外的所有可打印字符)
void main(){
	printf("%d\n",ispunct('a'));  
	printf("%d\n",ispunct('1'));  
	printf("%d\n",ispunct('A'));  
	printf("%d\n",ispunct('+'));  
	printf("%d\n",ispunct('-'));  
	printf("%d\n",ispunct('*'));  
	printf("%d\n",ispunct('/'));  
	printf("%d\n",ispunct(','));
	printf("%d\n",ispunct('#'));
	printf("%d\n",ispunct('%'));
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章