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;
}

 

 

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

欢迎点赞 ? 关注收藏 ⭐留言 ?  


版权声明:本文为weixin_62450887原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。