这一节中我们来讨论C语言自带的字符串处理函数。
                  与printf不同,这些函数不在之前熟悉的头文件stdio.h中。
                  而是在字符串专用的头文件string.h中。
                  因此,请在代码的顶端加上下面这行代码。
#include <string.h>接下来,我们将讨论一些常用的字符串处理函数的使用。
1. 获取字符串长度strlen
strlen函数可以获取字符数组中的字符串长度。它从第一个字符开始计数,直到遇到'\0'为止,并返回累计的长度。
strlen的函数原型:
size_t strlen (const char * str);输入:一个指向字符串首地址的指针。
                  输出:size_t类型的整型,用于表示字符串长度。
                  对于输入参数,使用了const修饰char,函数内部将无法修改这个指针所指向的字符。如果输入参数为非const的指针,会被转换为const指针。
                
使用const有两重意义:
- 保证函数内部不会修改指针所指向的字符。
- 提示使用者,传给该函数的字符串不会被修改。
                  对于第二点,当你遇到参数不带const的函数时,你也许会怀疑在函数执行过后,会不会修改了数据。而对于带有const的函数,你可以确信它不会修改任何数据。
                
对于输出参数,它是一个类型为size_t的整型。
size_t并不是一个新的关键词,它是已有整型变量的别名。
                  它有可能是unsigned int别名。也有可能是unsigned long或unsigned long long的别名。取决于编译器怎样实现。同时,sizeof关键词返回的结果也是size_t类型的。
                
                  printf打印size_t类型的整型时,虽然使用%d,%u在数值不大时可以正常打印结果。但是,使用转换规范%zu是更加严谨的。
                
#include <stdio.h>
#include <string.h>
int main() 
{
    char str[20] = "Hello";
    size_t size = sizeof(str);
    printf("sizeof=%d\n", size);
    size_t len = strlen(str);
    printf("len=%d\n", len);
    return 0; 
}
strlen(str)测量从第一个元素开始直到元素值为'\0'的字符串长度。
sizeof(str)测量数组本身占用空间的大小。
2.字符串拼接函数strcat
字符串拼接函数strcat,可以将源字符串的内容,拼接到目标字符串后面。
                  例如,源字符串为You\0,目标字符串为ILove\0。字符串拼接函数会将源字符串追加到目标字符串后面。使得目标字符串变为ILoveYou\0。
                

strcat函数原型如下:
char * strcat (char * destination, const char * source);输入:
                  char *destination 拼接目标字符串首地址
                  const char *source拼接源目标首地址
                
输出:
                  char *destination 拼接目标字符串首地址
                
#include <stdio.h>
#include <string.h>
int main()
{
    char dest[9] = "ILove";
    char src[4] = "You";
    //  拼接前
    printf("%s\n", src);
    printf("%s\n", dest);
    //  拼接字符串
    strcat(dest, src);
    //  拼接后
    printf("%s\n", src);
    printf("%s\n", dest);
    return 0;
}
拼接前:
                  源字符串为:You\0
                  目标字符串为:ILove\0
拼接后:
                  源字符串为:You\0
                  目标字符串为:ILoveYou\0
目标字符串所在的字符数组有9个元素,而拼接后ILoveYou\0也有9个字符。所以,这样是没问题的。
但是,请格外注意目标字符串后必须还有足够空间。如果目标字符串所在的数组仅有8个元素,这样拼接后,多出来的字符将造成数组越界。

 
          