常用字符串函数(二)

"本文详细介绍了C语言中的三个字符串处理函数:strcpy、strncpy和strcmp,并提供了它们的模拟实现。strcpy用于完全复制一个字符串到另一个空间,strncpy则允许指定复制的字符数,可能不以''结尾,而strcmp则用于比较两个字符串的ASCII值,判断其大小关系。同时还讲解了strncmp函数,用于比较指定长度的字符串。"
摘要由CSDN通过智能技术生成

C语言字符串函数(二)

strcpy函数

char* strcpy(char * destination, const char * source );
  • 功能;将Source字符串拷贝到Destination空间中
  • 返回值:返回Destination字符串起始地址
  • 空间:Destination字符串空间应足够大来存放Source字符串

strcpy函数模拟实现

#include<stdio.h>
char * mystrcpy(char* dest, const char* src)
{                                                  
	if (dest == NULL || src == NULL) {
		return 0;//判断指针是否为空
	}
	char* pdest = dest;
	
	while (*pdest++=*src++) {

	}
	/*while (*src != '\0') {
		*pdest = *src;
		pdest++;
		src++;
	}
	*pdest = '\0';*/将Source空间的‘\0,也拷贝到Destination空间
	return dest;

}
int main()
{
	char arr[] = "This is a string.";
	char arr1[128]="";
	printf("%s\n", mystrcpy(arr1,arr));
	return 0;
}

strncpy函数

char * strncpy ( char * destination, const char * source, size_t num );
  • 功能:从source字符串中拷贝num长度的字符到destination空间中
  • 返回值:返回dest字符串的起始地址
    注意如果src字符串大于等于num时,有num个字符被复制到dest中且不以\0结尾,当src字符串小于num时,src字符串全部被复制到dest中且后续字符用\0补上

strncpy函数模拟实现

#include<stdio.h>
char * mystrncpy(char* dest, const char* src,size_t num)
{                                                  
	if (dest == NULL || src == NULL) {
		return 0;//判断指针是否为空
	}
	int count = num;
	char* pdest = dest;
	while (*src != '\0'&&count>0) {
		*pdest = *src;
		pdest++;
		src++;
		count--;
	}
	while (count>0) {
		*pdest = '\0';
		count--;//注意如果src字符串大于等于num时,有num个字符被复
		        //制到dest中且不以\0结尾,当src字符串小于num时,
		        //src字符串全部被复制到dest中且后续字符用\0补上
		pdest++;
	}
	
	
	return dest;

}
int main()
{
	char arr[128] = "hello";
	char arr1[128]="This is a string";
	printf("%s\n", mystrncpy(arr1,arr,12));
	return 0;
}


strcmp函数

int strcmp ( const char * str1, const char * str2 );
  • 功能: 对两个字符串的ascⅡ码值进行逐个比较,比较出字符串大小
  • 返回值:str1大于str2,返回值大于0;str1小于str2,返回值小于0;str1等于str2,返回值等于0

strcmp函数模拟实现

#include<stdio.h>
int mystrcmp(const char* ptr1, const char* ptr2)
{           
	
	while (*ptr1 == *ptr2&& ptr1!='\0' && ptr2 != '\0') {
		ptr1++;
		ptr2++;
	}
		return *ptr1 - *ptr2;
	
}
int main()
{
	char arr[128] = "aaaa";
	char arr1[128] = "aaaab";
	printf("%d\n", mystrcmp(arr,arr1));
	return 0;
}

strncmp函数

int strncmp(const char* str1, const char* str2, size_t num)

功能:返回num字符串之前的字符串大小

strncmp函数模拟实现

#include<stdio.h>
int mystrncmp(const char* str1, const char* str2, size_t num)
{           
	
	while (*str1 == *str2&& str1!='\0' && str2 != '\0'&&num>0) {
		str1++;
		str2++;
		num--;
	}
	if (num == 0) {
		return 0;
	}
		return *str1 - *str2;
	
}
int main()
{
	char arr[128] = "aaaa";
	char arr1[128] = "aaaab";
	printf("%d\n", mystrncmp(arr,arr1,5));
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值