字符串_C語(yǔ)言

定義

  • 字符串是一種重要的數(shù)據(jù)類型
  • C語(yǔ)言中,字符串以字符串常量的形式出現(xiàn)或存儲(chǔ)于字符數(shù)組中
  • 字符串常量適用于程序不會(huì)對(duì)它們修改的字符串,其它字符串都必須存儲(chǔ)于字符數(shù)組或動(dòng)態(tài)分配的內(nèi)存中
  • 頭文件string.h包含了使用字符串函數(shù)所需的原型和聲明

字符串本質(zhì)上是一個(gè)帶有"\0"為結(jié)束標(biāo)識(shí)的字符數(shù)組 []可以為空

char name[] = "xianhe";
printf("%s\n",name);// 占位符為%s
char name1[6] = {'x','i','a','n','h','e'};

printf("%lu\n",sizeof(name1));// 打印長(zhǎng)度
printf("%lu\n",sizeof(name));// 字符串多"\0"作為結(jié)束標(biāo)志

專門操作C語(yǔ)言字符串的函數(shù)

字符串長(zhǎng)度

strlen 獲得字符串長(zhǎng)度的函數(shù)

注意:
strlen返回一個(gè)類型為size_t的值,這個(gè)類型的頭文件stddef.h中定義,它是一個(gè)無(wú)符號(hào)整數(shù)類型

雙引號(hào)里實(shí)際字符串的個(gè)數(shù) 區(qū)別好 sizeof
字符串拷貝 strcpy( , )

printf("%lu\n",strlen(name));// 
    char stu1[] = "12"; // 地址大
    char stu2[] = "anyao12231231323"; // 地址小
    printf("%s\n",strcpy(stu1, stu2));// 把后面的字符串 傳給前邊的字符串,前面的字符串被替換掉了

注意:最好使用字符串替換時(shí),第一個(gè)字符串一定要 >= 第二個(gè)字符串的長(zhǎng)度 否則可能會(huì)崩潰

!!!:這幾個(gè)字符串是放在棧

字符串比較 strcmp( , )

找到第一個(gè)不相同的字符,比較他們的asscii碼值,作差
字符串拼接 strcat( , )

    char letter[] = "bAa";
    char letter1[] = "bab";
    int count = strcmp(letter, letter1); 
    strcat(letter, letter1);// 把后邊的字符串拼接到前面的字符串之后

    printf("%s\n",letter);

倒轉(zhuǎn)字符串

   char c1[] ="abcdeqpef";// "edcba"
   
   for(int i = 0; i <strlen(c1) / 2; i++) {
        c1[i] = c1[i] ^ c1[strlen(c1) - i -1];
        c1[strlen(c1) - i -1] = c1[i] ^ c1[strlen(c1) - i -1];
        c1[i] = c1[i] ^ c1[strlen(c1) - i -1];
    }
    printf("%s\n",c1);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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