美文网首页十天学会C语言
第08天C语言(06):字符串-常用方法2

第08天C语言(06):字符串-常用方法2

作者: liyuhong | 来源:发表于2017-07-10 23:19 被阅读26次
    一、概念
    /*
     #include <string.h>
     1.字符串拼接
        原理 : 首先遍历第一个字符串,知道遇到\0,然后取出第二个字符串中的字符,从\0的位置开始添加
     
        strcat函数 strcat(dest, src) --- 将src中的数据 拼接到dest后面
          注意 : 要想使用字符串的拼接 函数,那么dest必须是一个数组,并且数组的长度 必须大于拼接之后的长度 (str必须足够长)
          如果dest的数组的长度,不能完全 存放dest+scr+\0 那么就会报错
        strncat函数 strncat(dest, src, len) ---  char * 相当于 dest chost char * 相当于 scr size_t 需要拼接的个数
     
     2.字符串拷贝
        strcpy函数 strcpy(dest, src) --- char * 目标 , const char * 源
         strcpy函数会将 源的数据拷贝到目标中, 并且会覆盖目标中原有的数据
          目标的容器必须 能够存放 拷贝的数据,如果容器 不够就会报错
             strcpy(str1, str2);
     
        strncpy函数 strncpy(dest, src, len)
            拷贝操作 是逐个替换, 拷贝了几个 就替换几个
            str1 能够存放元素的个数 - \0
     
     3.字符串比较
        strcmp的原理 : 取出字符串中的每一个字符 进行逐个比较, 如果发现不相等 就不会继续往下 比较
        如果该值 等于0, 那么证明 两个字符串相等
        如果该值 小于0, 那么证明 str 小于 str2
        如果该值 大于0, 那么证明 str 大于 str2
     */
    
    二、代码
    #include <stdio.h>
    #include <string.h>
    int main()
    {
    #pragma 1.字符串拼接 (strcat \ strncat)
        // 原理 : 首先遍历第一个字符串,知道遇到\0,然后取出第二个字符串中的字符,从\0的位置开始添加
        
    //    char str1[7] = "lyh";
    //    char str2[10] = " cool";
        // strcat(dest, src)
        // dest src
        // 目标 源
        // 将src中的数据 拼接到dest后面
        // 注意 : 要想使用字符串的拼接 函数,那么dest必须是一个数组,并且数组的长度 必须大于拼接之后的长度 (str必须足够长)
        // 如果dest的数组的长度,不能完全 存放dest+scr+\0 那么就会报错
    //    strcat(str1, str2);
        
        // strncat(dest, src, len)
        // char * 相当于 dest chost char * 相当于 scr size_t 需要拼接的个数
        // 为了避免 拼接之后超出str1的存储范围, 那么可以动态计算str需要拷贝几个到str1后面不会超出
        
        // str能够存放的元素个数 - str已经存放的个数 - \0
        /*
        size_t length = sizeof(str1) / sizeof(str1[0]) - strlen(str1) - 1;
    //    strncat(str1, str2, 2);
        strncat(str1, str2, length);
        printf("拼接后 %s\n",str1);
        */
        
    #pragma 2.字符串拷贝
        //
        /*
        char str1[4] = "lyh";
        char str2[10] = "cool";
        printf("拷贝前 %s\n",str1);
        // strcpy(dest, src)
        // char * 目标 , const char * 源
        // strcpy 函数会将 源的数据拷贝到目标中, 并且会覆盖目标中原有的数据
        // 目标的容器必须 能够存放 拷贝的数据,如果容器 不够就会报错
    //    strcpy(str1, str2);
        
        // char * 相当于 dest chost char * 相当于 scr size_t 需要拷贝几个
        // 注意 : 拷贝操作 是逐个替换, 拷贝了几个 就替换几个
        //           str1 能够存放元素的个数 - \0
        size_t length = sizeof(str1) / sizeof(str1[0]) -1;
        printf("length = %li\n",length);
        strncpy(str1, str2, length);
        printf("拼接后 %s\n",str1);
        */
    
        
    #pragma 3.字符串比较
        char str1[] = "abb";
        char str2[] = "abc";
        
        // strcmp  它会对传入的字符串 进行比较, 比较完毕之后 ,会返回一个整型的值 给我们
        // 如果该值 等于0, 那么证明 两个字符串相等
        // 如果该值 小于0, 那么证明 str 小于 str2
        // 如果该值 大于0, 那么证明 str 大于 str2
        // strcmp的原理 : 取出字符串中的每一个字符 进行逐个比较, 如果发现不相等 就不会继续往下 比较
        int res = strcmp(str1, str2);
        printf("res = %i\n",res);
        
        return 0;
    }
    

    相关文章

      网友评论

        本文标题:第08天C语言(06):字符串-常用方法2

        本文链接:https://www.haomeiwen.com/subject/botphxtx.html