C语言——字符串——常用函数API

1. puts(),gets(),memset()

要注意,在Linux底下使用gets会有警告,gets不会去检查字符串的长度,如果字符串过长就会导致溢出。如果溢出的字符覆盖了其他一些重要数据就会导致不可预测的后果。

char ch[128]={'\0'};    字符数组初始化
char *ch1;
ch1=(char *)malloc(128);
memset(ch1,'\0',128);   字符串初始化
gets(ch1);              字符串输入
puts(ch1);				字符串输出

2. strcpy——拷贝

先把dest中的内容清空,然后再拷贝进去

char *strcpy(char* dest,const char *src); 将src内容拷贝到dest中
	char *ch; 必须分配空间并初始化,防止发生段错误
	ch=(char *)malloc(128);
	memset(ch,'\0',128);
	
	char *ch1="c语言字符串";
	strcpy(ch,ch1); 
	puts(ch);//c语言字符串

3. strncpy——拷贝

将想要拷贝的个数加到末尾
	char *strncpy(char *dest,char *source,int maxlen);
	char ch[128]={'\0'};
	char *ch1="c语言字符串";
	strncpy(ch,ch1,3); 
	puts(ch);//c语

4. strcat——拼接

拼接后返回指向前一个字符串的指针

    //头文件#include<string.h>
	char ch[128]="c语言";	
	char *ch1="-字符串";
	strcat(ch,ch1); 
	puts(ch);//c语言-字符串

5. strcmp——比较

从左往右比较第一个不同的字符

	int strcmp(const char *s1,const char *s2);
	char *ch="12";	
	char *ch1="123";
	char *ch2="12";
	printf("ret=%d\n",strcmp(ch,ch1));//-1
	printf("ret=%d\n",strcmp(ch,ch2));//0
	printf("ret=%d\n",strcmp(ch1,ch));//1

6. strchr——检索字符

strchr函数功能为在一个串中查找给定字符的第一个匹配之处。 函数原型为:char *strchr (const char *str, int c),即在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。

	char *strchr(const char *str,char c)
	char *ch="Hello World!";
	char *ch2;
	ch2=(char *)malloc(128);
	memset(ch2,'\0',128);
	ch2=strchr(ch,'W');
	puts(ch2);//World!

7. strstr——检索字串

与strchr一样,只不过是检索字串,strstr (str1,str2) 函数用于判断字符串str2是否是str1的子串。 如果是,则该函数返回 str1字符串从 str2第一次出现的位置开始到 str1结尾的字符串;否则,返回NULL。 功能:strstr返回一个指针,指向string2在string1中首次出现的位置

	char *strstr(const char *haystack, const char *needle);
	char *ch="Hello World!";
	char *ch2;
	ch2=(char *)malloc(128);
	memset(ch2,'\0',128);
	
	ch2=strstr(ch,"Wor");
	puts(ch2);//World!

8. strlwr——字符串全转为小写

strlwr函数的功能是将字符串中的S参数转换为小写形式。 说明:只转换s参数中出现的大写字母,不改变其它 字符 。 返回指向s参数的 指针 。

char *strlwr(char *str);

注:在windows操作系统中需定义成字符数组的形式,使用指针写会闪退:

	char ch[]="HELLO WORLD!";	
	puts(strlwr(ch));//hello world!

注:在Linux中可使用指针:

	char *ch="Hello World!";
	puts(strlwr(ch));//hello world!

9. strupr——字符串全转为大写

strupr函数的功能是将字符串中的S参数转换为大写形式。 说明:只转换s参数中出现的小写字母,不改变其它 字符 。 返回指向s参数的指针 。

	char *strupr(char *str);

注:在windows操作系统中需定义成字符数组的形式,使用指针写会闪退:

	char ch[]="hello world!";	
	puts(strlwr(ch));//HELLO WORLD!

注:在Linux中可使用指针:

	char *ch="Hello World!";
	puts(strlwr(ch));//HELLO WORLD!

10. strtok——字符串的分割

   	char *strtok(char  *strings,const char *tokseps); 

例如:将字符串 “c语言,字符串,常用函数API” 以 ‘,’ 分割成 “c语言” , “字符串” 和 “常用函数API” 三个字符串;这个函数与strlwr,strupr一样,需要在这里使用字符串数组形式

	char *p=NULL;
	char ch[]="c语言,字符串,常用函数API";
	p=strtok(ch,",");
	puts(p);             //c语言 
	p=strtok(NULL,",");
	printf("p=%s\n",p);	 //p=字符串 
	
	p=strtok(NULL,",");
	printf("p=%s\n",p);  //p=常用函数API 
	
	p=strtok(NULL,",");
	printf("p=%s\n",p);  //p=(null)
可以观察到除了第一个字符串需要写入目标字符串外,其他都写NULL,且最后如果没有字符串了会返回null

所以我们可以改进它的写法

	char *p=NULL;
	char ch[]="c语言,字符串,常用函数API";
	p=strtok(ch,",");
	puts(p);              
	while(1){
		p=strtok(NULL,",");
		if(!p){
			exit(-1);	
		}
		puts(p);
	}

同时,因为返回的是一个一个的指针,因此我们可以使用指针数组

    char *p[3];
	char ch[]="c语言,字符串,常用函数API";

	p[0]=strtok(ch,",");
	p[1]=strtok(NULL,",");
	p[2]=strtok(NULL,",");

	for(int i=0;i<3;i++){
		printf("%s ",p[i]);
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值