1. <string.h> 是 C 标准库中的一个头文件,提供了一组用于处理字符串和内存块的函数。这些函数涵盖了字符串复制、连接、比较、搜索和内存操作等。
    1.1int strcmp(const char* str1, const char* str2)、int strcasecmp(const char *s1, const char *s2)和int strncasecmp(const char *s1, const char *s2, size_t n)
    相同点:作用均是比较两个字符串是否相等
    (1)若参数s1和s2字符串相同则返回0
    (2)若参数s1大于s2,则返回大于0的值
    (3)若参数s1小于s2,则返回小于0的值
    不同点:strcmp函数会区分字符大小写,其他两个不会
    strncasecmp函数,传入的第三个参数作用是将字符串的个数限制在前n个
    1.2char *strchr(const char *s, int c)和char *strrchr(const char *s, int c);
    相同点:
    第一个参数为字符串,第二个参数为字符
    作用均是在字符串中查找字符
    返回一个指向找到的字符的地址,否则返回null
    不同点:
    strchr函数是从左到右查找,也就是返回第一次出现该字符的地址,而strrchr函数是返回最后一次出现字符的地址。
    1.3char *strcpy(char *dest, const char *src)和char *strncpy(char *dest, const char *src, size_t n)
    相同点:
    作用均是拷贝src字符串到dest(指向用于存储复制内容的目标数组)里
    均返回指向目标字符串的指针
    不同点:
    strncpy函数将要拷贝的字符个数限制在了前n个,如果源字符串的长度小于 n,则 strncpy() 会在目标字符串的末尾添加一个 null 终止符。
    如果源字符串的长度大于或等于 n,则目标字符串不会被 null 终止,除非源字符串的前 n-1 个字符中恰好包含了一个 null 字符。
    由于 strncpy() 可能不会为目标字符串添加 null 终止符,因此在使用 strncpy() 后,通常需要手动检查并添加 null 终止符(如果尚未添加的话)。
    而strcpy函数会全部进行拷贝,但不会检查目标数组 dest 的大小是否足以容纳源字符串 src。如果目标数组太小,将会导致缓冲区溢出
  2. <limits.h> 是 C 标准库中的一个头文件,定义了各种数据类型的限制。这些宏提供了有关整数类型(char、short、int、long 和 long long 等)的最大值和最小值的信息。
  3. <float.h> 是 C 标准库中的一个头文件,定义了与浮点数类型(float、double 和 long double)相关的宏。这些宏提供了浮点数的特性和限制,例如最大值、最小值、精度等。