C语言有关串操作的复习

回顾一下C语言string.h'中为我们提供的一些库函数

strlen

函数原型

size_t strlen(const char* str);
/*strlen与sizeof的区别*/
void  main(void) {
	char str1[20] = "hello"; 
	char *str2 = "hello"; 
	printf("%d\n", sizeof(str1)); 
	printf("%d\n", sizeof(*str1)); 
	printf("%d\n",sizeof(str2));
	printf("%d\n",strlen(str1));
	printf("%d\n",strlen(str2));
	printf("%d\n", sizeof(int));
	system("pause");
}

运行结果

![](https://img-blog.csdnimg.cn/20200228001016931.png

特点:

  1. sizeof是个关键字,strlen为库函数
  2. sizeof计算的是数据内存空间占有大小,strlen计算的字符个数
  3. sizeof(str2)计算的是这个str2这个指针所占有空间的大小,在32位系统上,不管指针p指向的是整型数据,还是字符型数据,short型数据,long型数据等,指针本身所占的内存字节数均为4。64位下为8字节。

strcpy

函数原型

 char *strcpy(char *dest, const char *src)
 char *strncpy(char *dest, const char *src, size_t n)
void  main(void) {
	char Buffer[100] = "aaaaaaaaaaaaaaaaaaaaaa";
	char buffer[100] = "bbbbbbbbbb";
	/*strcpy会复制‘\0’*/
	strcpy(Buffer,"hello worid");
	printf("%s\r\n", Buffer);

	/*strcpy不会复制‘\0’*/
	strncpy(buffer, "hello",5);
	printf("%s\r\n", buffer);
	
	/*当n大于要被复制字符串的字符个数时,会在多余位置添加‘\0’*/
	strncpy(buffer, "hello", 8);
	for(int i=0;i<10;i++){ 
	printf("%d ", buffer[i]); 
	}
	system("pause");
}

运行结果

在这里插入图片描述

特点

  1. strcpy复制时会将被复制的字符串尾的'\0'一同复制过来,而strncpy不会
  2. strncopy在复制时,如果n大于要被复制字符串的字符个数,会在多余的位置添加'\0'。多余位置数:n-strlen(src)
  3. 两者函数返回均为dest的地址

strcat

函数原型

 char *strcat(char *dest, const char *src);char *strncat(char *dest, const char *src, size_t n);
/*strcat与strncat的区别*/
void  main(void) {

	char buffer[20] = "aaaaaaa";
	char Buffer[20] = "aaa\0aaa";

	strcat(buffer,"hello");
	strcat(Buffer,"hello");
	printf("%s\r\n",buffer);
	printf("%s\r\n",Buffer);
	strncat(buffer,"hell0",3);
	printf("%s\r\n", buffer);
	strncat(Buffer, "hell0", 6);
	printf("%s\r\n", Buffer);

	system("pause");
}

运行结果

在这里插入图片描述

特点

  1. strcat与strncat都是将src字符串追加到dest字符串的'\0'处,并替换掉这里'\0'
  2. 当n大于src中字符个数时,则只将 src 字符串追加到 dest 指向的字符串的后面
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值