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('%'));
}




  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值