程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言入門知識 >> C語言學習入門 (四) 字符串、字符串數組、字符和字符串相關函數

C語言學習入門 (四) 字符串、字符串數組、字符和字符串相關函數

編輯:C語言入門知識

字符串簡介

* 在Java中,一個字符串可以用String類型來存儲

String s = "MJ";

C語言中沒有String這種類型。其實字符串就是字符序列,由多個字符組成,所以在C語言中,我們可以用字符數組來存儲字符串。

* 字符串可以看做是一個特殊的字符數組,為了跟普通的字符數組區分開來,應該在字符串的尾部添加了一個結束標志'\0'。

'\0'是一個ASCII碼值為0的字符,是一個空操作符,表示什麼也不干。所以采用字符數組存放字符串,賦值時應包含結束標志'\0'。

* 字符串"mj"的存儲情況如下(假設用字符數組char a[]來存儲):char a[] = {'m', 'j', '\0'};

注意了,尾部有個'\0',如果沒有這個結束標記,說明這個字符數組存儲的並不是字符串

字符串的初始化

char a[3] = {'m', 'j', '\0'};


char b[3];

b[0] = 'm';

b[1] = 'j';

b[2] = '\0';


char c[3] = "mj"; //“”初始化時,系統會自動在字符串尾部加上一個\0結束符

char d[] = "mj";

char e[20] = "mj";


使用‘’初始化時,一定記得加‘\0’,

字符串數組簡介

* 一維字符數組中存放一個字符串,比如一個名字char name[20] = "mj"

* 如果要存儲多個字符串,比如一個班所有學生的名字,則需要二維字符數組,char names[15][20]可以存放15個學生的姓名(假設姓名不超過20字符)

* 如果要存儲兩個班的學生姓名,那麼可以用三維字符數組char names[2][15][20]

字符串數組的初始化

char names[2][10] = { {'J','a','y','\0'}, {'J','i','m','\0'} };


char names2[2][10] = { {"Jay"}, {"Jim"} };


char names3[2][10] = {"Jay","Jim" };

字符輸出函數putchar

putchar(65); // A

putchar('A'); // A

int a = 65;

putchar(a); // Aputchar一次只能輸出一個字符

字符輸入函數getchar

char c;

c = getchar();

* getchar函數可以讀入空格、TAB,直到遇到回車為止。scanf則不能讀入空格和TAB。

* getchar一次只能讀入一個字符。scanf則可以同時接收多個字符。

* getchar還能讀入回車換行符,這時候你要敲2次回車鍵。第1次敲的回車換行符被getchar讀入,第2次敲的回車鍵代表輸入結束。

strlen函數 返回字符串長度不包括 \0, 計算時直到 \0為止

int size = strlen(“aab”);

strcpy函數

char s[10];

strcpy(s,"lmj");將右邊的"lmj"字符串拷貝到字符數組s中 直到拷貝到\0為止 在s的尾部肯定會保留一個\0

strcat函數

char s[20] = “hello”; // 將右邊的字符串拼接到 s的尾部,連接完畢後在s的尾部保留一個\0

strcmp函數

兩個字符串從左至右逐個字符比較(按照字符的ASCII碼值的大小),直到字符不相同或者遇見'\0'為止。如果全部字符都相同,則返回值為0。

如果不相同,則返回兩個字符串中第一個不相同的字符ASCII碼值的差。即字符串1大於字符串2時函數返回值為正,否則為負。

strcmp(s1, “abd”);


puts函數 輸出一個字符串後自動換行,一次只能輸出一個字符串到‘\0’結束

char a[]={‘a’,’b’,’\0’}; puts(a); puts(“ab”);



gets函數

系統會自動在尾部加上一個結束標記\0

char a[10];

gets(a); 一次只能讀取一個字符串 ,scanf 讀取可以多個

gets可以讀入包含空格、tab的字符串,直到遇到回車為止;scanf不能用來讀取空格、tab

gets與scanf混用時發現:先gets再scanf沒事,若先scanf再gets則gets不執行了,因為先gets表示第1個就是屬於它的


scanf函數

char a[10];系統會自動在尾部加上一個結束標記\0

scanf("%s", a);因為a代表它的地址,所以不需要寫成&a

scanf(“%f”, &a); scanf(“%d, %s,%f”, &a,&b,&c); 接收多個時,分隔符可以是任意符號

包括空格、tab、回車

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved