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中的常用函數
void main(){
printf("%d\n",isalpha('a')); //測試返回值,a是字母所以返回非0
printf("%d\n",isalpha('1')); //測試返回值,1不是字母所以返回0
}
void main(){
printf("%d\n",isalnum('a'));
printf("%d\n",isalnum('1'));
printf("%d\n",isalnum('+'));
}
void main(){
printf("%d\n",isdigit('b'));
printf("%d\n",isdigit('1'));
printf("%d\n",isdigit('+'));
}
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是否是小寫字母
}
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不是字母原樣返回
}
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('%'));
}