C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串中或者字符数组中。
字符串常量适用于那些对它不做修改的字符串函数。
一、字符串函数
1.求字符串长度 strlen
字符串以 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包
含 '\0' );
size_t strlen ( const char * str );
参数指向的字符串必须要以 '\0' 结束,否则在内存中一直寻找,直到遇见'\0'停止;
注意函数的返回值为size_t,是无符号的。
//strlen
//string length
//求字符串长度的,统计的是字符串中\0之前出现的字符个数
#include <stdio.h>
#include <string.h>
int main()
{
//a b c \0 d e f \0
char arr1[] = "abc\0def"; //三个字符之后遇上'\0',所以字符串长度为3
char arr2[] = "abcdef"; //在f后面自动添加'\0',所以字符串长度为6
char arr3[] = { 'a', 'b', 'c' }; //这种方式不会在末尾自动加上'\0',
//所以会一直往后,字符串长度为大于3的随机值
printf("%d\n", strlen(arr1));
printf("%d\n", strlen(arr2));
printf("%d\n", strlen(arr3));
return 0;
}
2.长度不受限制的字符串函数
1)strcpy 复制字符串
源字符串必须以 '\0' 结束。
目标空间必须有足够的大,能容纳下源字符串的内容。
目标空间必须可修改。
int main()
{
char arr1[10] = {0};
char arr2[] = "abcdef";
char arr3[] = "abc\0def";
strcpy(arr1, arr2); //从arr2处开始复制字符到arr1中,直到遇到'\0'
printf("%s\n", arr1);
strcpy(arr1, arr3); //从arr2处开始复制字符到arr1中,直到遇到'\0'
printf("%s\n", arr1);
return 0;
}
模拟实现strcpy函数
//模拟实现strcpy函数
char* my_strcpy(char* dest, const char* src)
{
assert(dest);
assert(src);
char* ret = dest;
while (*dest++ = *src++)
{
;
}
return ret;
}
2)strcat 拼接两个字符串
源字符串必须以 '\0' 结束。
目标空间必须有足够的大,能容纳下源字符串的内容。