字符函数 《string.h》
无字符串长度限制的字符串函数
1. strlen 计算字符串长度
strlen 函数的参数
size_t strlen ( const char * str );
- strlne 是计算字符
‘\0’
之前所有字符的的个数,不包括\0
- strlen 的函数返回值是
unsigned int
类型,无符号整形 - strlen 的参数指向的字符串的结尾必须包涵
\0
,字符串是以\0
作为结束标志
strlen 的使用方法
#include<string.h>
int main()
{
char arr[] = {
"abcde" };
int n = strlen(arr);
int i = 0;
for (i = 0; i < n; i++)
{
printf("%c ", arr[i]);
}
return 0;
}
关于 strlen 函数的返回值是size_t
,也就是uisigned int
的例题
int main()
{
const char* n = "abcdef";
const char* x = "abx";
if (strlen(x) - strlen(n) > 0)
{
printf("x > n\n");
}
else
{
printf("n > x\n");
}
return 0;
}
- 题解
上面的例题中,n的字符串个数是 6,x 的字符串个数是 3
3 - 6 = -3
正常的结果是 n > x
但是之前说过 strlen函数的返回的是 size_t,是无符号的
-3 如果被当成无符号数来解读的话,那就没有符号位的概念了
-3 就会被解读成一个超级大的正数,就会大于 0
结果: x > n
2. strcpy 字符串拷贝
strcpy 函数的参数
char* strcpy(char * destination, const char * source );
- strcpy 字符串拷贝的源字符串必须以
\0
为结束标志 - strcpy 会将源字符串中的 ‘\0’ 拷贝到目标空间中
- 拷贝的目标空间必须足够大,拷贝后能够存放字符串
- strcpy 拷贝的字符串必须是可改变的,不能是常量字符串
strcpy 函数的使用
strcpy 里的第一个参数是拷贝的目标空间
,第二个参数是拷贝的内容
int main()
{
char arr[20] = {
"################" };
char x[] = {
"hello china" };
strcpy(arr, x);
printf("%s", arr);
return 0;
}
3. strcat 字符串追加
strcat 函数的参数
char * strcat ( char * destination, const char * source );
strcat 字符串追加,是在字符串 A 后面在追加一个字符串 B
- strcat 的源字符串必须以
\0
为结束标志 - strcat 的被追加的空间必须能够存放的下追加的字符串
- strcat 的源字符串必须是可改变的,不能是常量字符串
strcat 函数的使用
int main()
{
char arr[20] = {
"hello " };
char arr2[] = "china";
strcat(arr, arr2);
printf("%s\n", arr);
return 0;
}
- strcat 函数追加会把 arr2 的所有字符串拷贝到arr1里,包括
\0
- arr2拷贝时会把arr1 里的
\0
覆盖,所以 strcat 函数不能字符串A 追加 字符串A