0729学习笔记(各种函数)

copy函数

#include <stdio.h>
#include <string.h>
/*
copy函数
*/

int main()
{
	char ar[50]="good morning";
	char br[50];
	char *p=NULL;
	
	puts(ar);
	p=strcpy(br,ar);
	puts(br);
	int i;
	for(i=0;i<4;i++)//验证strcpy返回目标的首地址 
	{
		br[12+i]='a'+i;
	}
	br[12+i]='\0';
	puts(p);
	puts(br);
	char cr[50];	
	strncpy(cr,ar,6);//只copy前6个  不包含'\0'
	cr[6]='\0';
	puts(cr); 
	return 0;
} 

拼接函数

#include <stdio.h>
#include <string.h>
/*
拼接函数
*/
int main()
{
	char s1[100]="strcat teat ";
	char s2[]="strcat02 to strcat01";
	puts(s1);
	puts(s2);
	
	strcat(s1,s2);
	printf("追加后s1的内容:%s\n",s1);
	puts(s1);
	
	strncat(s1,s2,8);//不需要加'\0' 
	puts(s1);
	
	return 0;
}

比较函数

#include <stdio.h>
#include <string.h>
/*
比较函数
*/

int main()
{
	char s1[]="bigbigbig";
	char s2[]="small";
	char s3[]="bigbigbig";
	int n;
	
	n=strcmp(s2,s1);//s2首位大于s1首位 
	printf("%d\n",n);//1
	n=strcmp(s1,s2);
	printf("%d\n",n);//-1
	n=strcmp(s1,s3);
	printf("%d\n",n);//0
	
	n=strncmp(s1,s3,6);//只比较前6个字符 
	
	return 0;
} 

切割函数

#include <stdio.h>
#include <string.h>
/*
切割函数
*/

int main()
{
	char s1[]="shan you mu xi mu you zhi";
	char *p;
	puts(s1);
	p=strtok(s1," ");//首次切割需要传入切割的字符串 
	puts(s1);
	puts(p);
	p=strtok(NULL," ");//二次和多次切割时需要传入NULL   直到p=NULL(空)就切完了 
	puts(p);
	
	return 0;
} 

查找函数

#include <stdio.h>
#include <string.h> 
/*
查找函数
*/

int main()
{
	char *s1="xin yue jun xi jun bu zhi";
	char *p=NULL;
	char *s2="big";
	
	p=strchr(s1,'b');/*参数1是需要查找的字符串,参数2是需要查找的字符  返回值是
	参数2 的位置地址 */
	printf("找到字符'b'在字符串的地址后的内容%s\n",p);
	p=strrchr(s1,'j');//反向查找 
	printf("找到字符'j'在字符串的地址后的内容%s\n",p);
	p=strchr(s1,'j');//正向查找 
	printf("找到字符'j'在字符串的地址后的内容%s\n",p);
	
	p=strpbrk(s1,s2); 
	printf("字符串s2在s1中查找地址后的内容%s\n",p);//s2各个字符优先级平等,先找到谁就停止 
	
	p=strstr(s1,s2);//全字查找 
	printf("字符串s2在s1中查找地址后的内容%s\n",p);
	
	int n=0;
	n=strcspn(s1,s2);
	printf("s2中任意字符在s1中首次出现不包含该字符前面的字符数量%d\n",n);
	
	n=strspn(s1,s2);//s2中任意字符在s1中没出现的首个字符下标 
	printf("不存在的字符下标%d\n",n);
	 
	return 0;
} 

        结果

找到字符'b'在字符串的地址后的内容bu zhi
找到字符'j'在字符串的地址后的内容jun bu zhi
找到字符'j'在字符串的地址后的内容jun xi jun bu zhi
字符串s2在s1中查找地址后的内容in yue jun xi jun bu zhi
字符串s2在s1中查找地址后的内容(null)
s2中任意字符在s1中首次出现不包含该字符前面的字符数量1
不存在的字符下标0

--------------------------------
Process exited after 0.02787 seconds with return value 0
请按任意键继续. . .

字符串长度和大小写转换

#include <stdio.h>
#include <string.h>

int main()
{
	char num[100]="chi mei wang liang";
	int n=0;
	n=strlen(num);
	printf("num字符串的长度(字符数量):%d\n",n); 
	n=sizeof(num)/sizeof(char);
	printf("数组开辟的空间大小:%d\n",n);
	
	char *p;
	puts(num);
	p=strupr(num);//小写转大写
	puts(num); 	
	p=strlwr(num);//大写转小写
	puts(num);
	
	
	return 0;
}

        结果

num字符串的长度(字符数量):18
数组开辟的空间大小:100
chi mei wang liang
CHI MEI WANG LIANG
chi mei wang liang

--------------------------------
Process exited after 0.04046 seconds with return value 0
请按任意键继续. . .

字符串转数值

#include <stdio.h>
#include <stdlib.h>

int main()
{
	char num[50]="6666666666";
	double n=0;
	n=atof(num);//纯数字字符串转换成数值   int——atoi  long——atol  double——atof 
	printf("%f\n",n);
	
	char s1[]="16s";
	char *p=NULL;
	int i;
	i=strtod(s1,&p);//strtod——int  strtol——long(数组,&指针,基数)  strtoul——无符号long 
	//参数1指向要转换的字符串,参数二指向不能被转换的整个字符串的地址 
	printf("s1不能被转换的字符串%s\n",p);
	printf("%d\n",i);
	
	i=strtol(s1,&p,16);//基数是该字符串代表的进制 
	printf("%d\n",i);
	
	return 0;
}

        结果

6666666666.000000
s1不能被转换的字符串s
20
32

--------------------------------
Process exited after 0.03934 seconds with return value 0
请按任意键继续. . .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值