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

一、概念
/*
 #include <string.h>
 1.字符串拼接
    原理 : 首先遍歷第一個(gè)字符串,知道遇到\0,然后取出第二個(gè)字符串中的字符,從\0的位置開始添加
 
    strcat函數(shù) strcat(dest, src) --- 將src中的數(shù)據(jù) 拼接到dest后面
      注意 : 要想使用字符串的拼接 函數(shù),那么dest必須是一個(gè)數(shù)組,并且數(shù)組的長度 必須大于拼接之后的長度 (str必須足夠長)
      如果dest的數(shù)組的長度,不能完全 存放dest+scr+\0 那么就會報(bào)錯(cuò)
    strncat函數(shù) strncat(dest, src, len) ---  char * 相當(dāng)于 dest chost char * 相當(dāng)于 scr size_t 需要拼接的個(gè)數(shù)
 
 2.字符串拷貝
    strcpy函數(shù) strcpy(dest, src) --- char * 目標(biāo) , const char * 源
     strcpy函數(shù)會將 源的數(shù)據(jù)拷貝到目標(biāo)中, 并且會覆蓋目標(biāo)中原有的數(shù)據(jù)
      目標(biāo)的容器必須 能夠存放 拷貝的數(shù)據(jù),如果容器 不夠就會報(bào)錯(cuò)
         strcpy(str1, str2);
 
    strncpy函數(shù) strncpy(dest, src, len)
        拷貝操作 是逐個(gè)替換, 拷貝了幾個(gè) 就替換幾個(gè)
        str1 能夠存放元素的個(gè)數(shù) - \0
 
 3.字符串比較
    strcmp的原理 : 取出字符串中的每一個(gè)字符 進(jìn)行逐個(gè)比較, 如果發(fā)現(xiàn)不相等 就不會繼續(xù)往下 比較
    如果該值 等于0, 那么證明 兩個(gè)字符串相等
    如果該值 小于0, 那么證明 str 小于 str2
    如果該值 大于0, 那么證明 str 大于 str2
 */
二、代碼
#include <stdio.h>
#include <string.h>
int main()
{
#pragma 1.字符串拼接 (strcat \ strncat)
    // 原理 : 首先遍歷第一個(gè)字符串,知道遇到\0,然后取出第二個(gè)字符串中的字符,從\0的位置開始添加
    
//    char str1[7] = "lyh";
//    char str2[10] = " cool";
    // strcat(dest, src)
    // dest src
    // 目標(biāo) 源
    // 將src中的數(shù)據(jù) 拼接到dest后面
    // 注意 : 要想使用字符串的拼接 函數(shù),那么dest必須是一個(gè)數(shù)組,并且數(shù)組的長度 必須大于拼接之后的長度 (str必須足夠長)
    // 如果dest的數(shù)組的長度,不能完全 存放dest+scr+\0 那么就會報(bào)錯(cuò)
//    strcat(str1, str2);
    
    // strncat(dest, src, len)
    // char * 相當(dāng)于 dest chost char * 相當(dāng)于 scr size_t 需要拼接的個(gè)數(shù)
    // 為了避免 拼接之后超出str1的存儲范圍, 那么可以動態(tài)計(jì)算str需要拷貝幾個(gè)到str1后面不會超出
    
    // str能夠存放的元素個(gè)數(shù) - str已經(jīng)存放的個(gè)數(shù) - \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 * 目標(biāo) , const char * 源
    // strcpy 函數(shù)會將 源的數(shù)據(jù)拷貝到目標(biāo)中, 并且會覆蓋目標(biāo)中原有的數(shù)據(jù)
    // 目標(biāo)的容器必須 能夠存放 拷貝的數(shù)據(jù),如果容器 不夠就會報(bào)錯(cuò)
//    strcpy(str1, str2);
    
    // char * 相當(dāng)于 dest chost char * 相當(dāng)于 scr size_t 需要拷貝幾個(gè)
    // 注意 : 拷貝操作 是逐個(gè)替換, 拷貝了幾個(gè) 就替換幾個(gè)
    //           str1 能夠存放元素的個(gè)數(shù) - \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  它會對傳入的字符串 進(jìn)行比較, 比較完畢之后 ,會返回一個(gè)整型的值 給我們
    // 如果該值 等于0, 那么證明 兩個(gè)字符串相等
    // 如果該值 小于0, 那么證明 str 小于 str2
    // 如果該值 大于0, 那么證明 str 大于 str2
    // strcmp的原理 : 取出字符串中的每一個(gè)字符 進(jìn)行逐個(gè)比較, 如果發(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)容