目录
一.求字符串长度
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;
}
(注:本文为原创作品,若无意侵权,请联系我。)
欢迎点赞 👍 关注收藏 ⭐留言 📝