C語言day08-06字符串常用方法2

pragma mark 字符串常用方法2

pragma mark 概念

/**
 字符串連接函數(shù) strcat 、strncat(多了一個拼接的個數(shù))
 字符串拷貝函數(shù) strcpy 、strncpy
 字符串比較函數(shù) strcmy 、strncmy
 */

pragma mark 代碼

#include <stdio.h>
#include <string.h> // 字符串拼接、拷貝、比較、計(jì)算長度
int main()
{
#warning 字符串拼接 strcat函數(shù) strncat函數(shù)
    /*
    // 1.字符串拼接
    // 拼接原理 : 首先遍歷第一個字符串, 直到遇到\0為止,然后取出第二個字符串中的字符,從\0的位置開始添加,添加完畢之后再最后面添加一個\0
     
    char str1[7] = "lyh";
    char str2[10] = " cool";
    printf("拼接前 : %s\n",str1);

    // strcat(dest, src)
    // dest : 目標(biāo) src : 源
    // 將src中的數(shù)據(jù)拼接到dest后面
    // 注意 : 要向使用字符串拼接函數(shù),那么dest必須是一個數(shù)組,并且數(shù)組的長度必須大于拼接之后的長度\
    如果dest數(shù)組的長度, 不能完全存放dest+src+\0 , 那么就會報(bào)錯
//    strcat(str1, str2);
    
    // char * 相當(dāng)于 dest
    // const char * 相當(dāng)于 src
    // size_t 需要拼接的個數(shù)
    
    // 為了避免拼接之后超出str1的存儲范圍,那么可以動態(tài)計(jì)算str2需要拷貝幾個到str1后面不會超出
    
    //                  str1能夠存放的元素個數(shù)       - str已經(jīng)存放的個數(shù)  - \0
    size_t length = sizeof(str1) / sizeof(str1[0]) - strlen(str1) - 1; // 10 - 3
    printf("length = %lu\n",length);
    strncat(str1, str2, 2);
    printf("拼接后 : %s\n",str1);
     */
    
#warning 字符串拷貝 strcpy、strncpy
    /*
    char str1[4] = "lyh";
    char str2[] = "cool";
    printf("拷貝前 str1 = %s\n",str1);

    // char * 目標(biāo) const char * 源
    // strcpy 函數(shù)會將源的數(shù)據(jù)拷貝目標(biāo)中,并且會覆蓋掉目標(biāo)中原有的數(shù)據(jù)
    // 目標(biāo)的容積能夠存放拷貝的數(shù)據(jù),如果容積不夠會報(bào)錯
//    strcpy(str1, str2);
    
    // strncpy
    // char * 相當(dāng)于 dest
    // const char * 相當(dāng)于 src
    // size_t 需要拷貝幾個
    // 注意 : 拷貝做是逐個替換,拷貝了幾個就替換幾個
    //              str能夠存放元素的個數(shù)  -1是給\0留出的位置
    int length = sizeof(str1) / sizeof(str1[0]) - 1;
    
//    printf("length = %i\n",length);
    strncpy(str1, str2, length);
    printf("拷貝后 str1 = %s\n",str1);
     */
#warning 字符串比較  strcmy、strncmy
    char str1[] = "abb";
    char str2[] = "abc";

    // strcmp 他會對傳入的字符串進(jìn)行比較,比較完畢之后返回一個整型的值給我們
    // 如果讀值等于0,那么證明兩個字符串相等
    // 如果該值小于0,那么證明str1小于str2
    // 如果該值大于0,那么證明str1大于str2
    
    
    // strcmp 原理 : 取出字符串中的每一個字符進(jìn)行逐個比較,如果發(fā)現(xiàn)不想等就不會繼續(xù)往下比較
    int res = strcmp(str1, str2);
    printf("res = %i\n",res);
    return 0;
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容