C语言:str函数(一)

 

目录

 一.求字符串长度

1.strlen

二.长度不受限制的字符串函数

 1.strcpy

 2.strcat

 3.strcmp


 一.求字符串长度

1.strlen

size_t strlen ( const char * str );

(1).字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包 含 '\0' )

这里值得注意的是

int main()
{
	char arr1[] = { "abc" };
	char arr2[] = { 'a','b','c','\0' };
	char arr3[] = { 'a','b','c' };
	printf("%d\n", strlen(arr1)); 
	printf("%d\n", strlen(arr2)); 
	printf("%d\n", strlen(arr3));
	return 0;
}

(2).函数的返回值为size_t(unsigned int),是无符号的!所求的两个字符串的长度无法在进行加减运算,但是如果直接进行比赛的时候就可以正确运行。

int main()
{
	if (strlen("abc") - strlen("abcdef")>0)
		printf(">\n");
	else
		printf("<=\n");
	if ((int)strlen("abc") - (int)strlen("abcdef") > 0)
		printf(">\n");
	else
		printf("<=\n");
 	if(strlen("abc") > strlen("abcdef"))
		printf(">\n");
	else
		printf("<=\n");
	return 0;
}

(3)参数指向的字符串必须要以 '\0' 结束。

二.长度不受限制的字符串函数

 1.strcpy

char* strcpy(char * destination, const char * source );

(1)strcpy(arr2,arr1);

将arr1复制到arr2后面(源字符串必须以 '\0' 结束)(会将源字符串中的 '\0' 拷贝到目标空间)

int main()
{
	char arr1[] = {'a', 'b', 'c', 'd', 'e', 'f', '\0'};
	char arr2[20] = "xxxxxxxxxxxx";
	//const char* p = "xxxxxxxxxx";
	strcpy(arr2, arr1);
	printf("%s\n", arr2);
	return 0;
}

(2)目标空间必须足够大,以确保能存放源字符串。(装不下的情况能放多少放多少)

 (3)目标空间必须可变。

程序崩溃,无法运行。

 2.strcat

char * strcat ( char * destination, const char * source );

(1)将字符串的副本追加到目标字符串。目标中终止的空字符将被的第一个字符覆盖,并且在目标中由两者串联形成的新字符串的末尾包含一个空字符.(源字符串必须以 '\0' 结束。)

int main()
{
	char arr1[30] = "hello";
	char arr2[] = "world";// {'w', 'o', 'r', 'l', 'd', '\0'};

	printf("%s\n", strcat(arr1, arr2));

	return 0;
}

(2)目标空间必须有足够的大,能容纳下源字符串的内容。 

 

(3)目标空间必须可修改。

 3.strcmp

int strcmp ( const char * str1, const char * str2 );

(1)将 C 字符串 str1 与 C 字符串 str2 进行比较
此函数开始比较每个字符串的第一个字符。如果它们彼此相等,则继续使用以下对,直到字符不同或达到终止空字符。

int main()
{
	char arr1[] = "abc";
	char arr2[] = "abc";
	int ret = strcmp(arr1, arr2);
	if (ret<0)
	{
		printf("arr1<arr2");	
	}
	else if (ret >0)
	{
		printf("arr1>arr2");
	}
	else
	{
		printf("arr1==arr2");
	}
	return 0;
}

 

 

(注:本文为原创作品,若无意侵权,请联系我。)

欢迎点赞 👍 关注收藏 ⭐留言 📝  

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值