C入門7:字符串入門

1. 字符串是什么?

存放字符(char)的數(shù)組稱為字符數(shù)組。在C語言中,使用NULL字符('\0')終止的一維字符數(shù)組被稱作字符串。
字符串的各個元素依次存放各個字符,字符串的變量名代表該數(shù)組的首地址。

2. 字符串怎么用?

2.1 聲明

  • 語法
    字符串初始化方式與普通數(shù)組一樣。
    char 字符串變量名[字符數(shù)量];
    

2.2 初始化

  • 語法
    字符串可以按照普通數(shù)組初始化方式初始化。
    char 字符串變量名[字符數(shù)量] = {字符1,字符2,....,'\0'};
    
    例如:
    char greeting[12] = {'H', 'e', 'l', 'l', 'o',' ','W','o','r','l','d','\0'};
    
    注意字符串最后一個字符必須是\0。
    字符串有一種更加簡單的初始化寫法
    char 字符串變量名[字符數(shù)量] = 字符串字面量;
    
    或者
    char 字符串變量名[] = 字符串字面量;
    
    例如:
    char greeting[12] = "Hello World";
    
    或者
    char greeting[] = "Hello World";
    

2.3 輸入輸出

字符串輸入輸出與數(shù)值是一樣的,使用函數(shù)scanf()printf()。只是占位符不同,字符串格式占位符為%s
例如:

#include <stdio.h>

int main(){
    char str[1024];
    printf("請輸入你的名字:");
    scanf("%s",str);
    printf("你好,%s\n",str);
}

2.4 訪問字符

字符串的訪問方式與數(shù)組數(shù)字是一樣的,按照索引/下標(biāo)方式訪問。


  • 語法
    字符數(shù)組名[索引]
    
    例如:
    // 打印首字符
    printf("%c\n", greeting[0]);
    
    // 修改首字符
    greeting[0] = 'F';
    
    // 打印修改后的字符串
    printf("%s\n",greeting);
    

2.5 遍歷

  • 基本套路
    for (int i=0; '\0' != str[i]; ++i){ // 依次生成字符數(shù)組索引
      str[i] // 訪問數(shù)組的每一個字符
    }
    
  • 示例
    實現(xiàn)一個字符串縱向輸出
    輸入
    Hello World
    
    輸出
    H
    e
    l
    l
    o
    
    W
    o
    r
    l
    d
    

2.6 賦值

試一下

char s[]="Hello World";
char t[20];
t = s;

字符串賦值可以使用遍歷的方式

for(int i=0;'\0'!=s[i];++i){
    t[i] = s[i];
}

更便捷的是使用函數(shù)strcpy()

strcpy(t,s);

字符串賦值注意事項

  1. 目標(biāo)字符串長度要大于等于源字符串長度。
  2. 目標(biāo)字符串結(jié)尾是'\0'
    有些時候,字符串聲明時沒有初始化,這時字符串里的值是隨機值。需要手動賦值。賦值方式如下所示:
char str[30];
for (int i=0; i<30; ++i){
    str[i] = '\0';
}

3. 實踐

3.1 練習(xí)

  1. 統(tǒng)計
    輸入字符串s,打印出字符串s的長度(不包含'\0')。
    輸入字符串s和字符c,打印出字符c在字符串s中出現(xiàn)的次數(shù)。
  2. 查找
    輸入字符串s和字符c,打印出c在字符串s中的第一次出現(xiàn)的位置(第一個字符位置為0,s不包含c返回-1)。
    輸入字符串s和字符c,打印出c在字符串s中的最后一次出現(xiàn)的位置(第一個字符位置為0,s不包含c返回-1)。
  3. 替換
    輸入字符串s、數(shù)字n和字符c ,用字符c替換字符串sn位置的字符,打印出替換結(jié)果。
    輸入字符串s、字符c1和字符c2 ,用字符c2替換字符串sc1,打印出替換結(jié)果。
  4. 逆序/反序
    輸入字符串s,打印出字符串s的反序。LeetCode 344. 反轉(zhuǎn)字符串
    輸入字符串s,判斷字符串是否是回文。
  5. 輸入一個年月日時分秒組成的數(shù)字,按照XXXX年XX月XX日XX時XX分XX秒打印出來。例如:輸入20190311180301,打印出2019年3月11日18時3分1秒。

3.2 實例

  1. 輸入身份證號,打印身份證中出生年月日和性別。
  2. 輸入身份證號,判斷身份證的合法性。
  3. 輸入身份證號,打印身份證的地區(qū)信息。
  4. 根據(jù)輸入信息,生成合法的身份證號。
  5. 隨機生成合法的身份證號。

身份證號原理

1 構(gòu)成

2 地址碼


詳細(xì)地址碼參考

3 出生日期碼

4 順序碼

5 校驗碼

6 校驗

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

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

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