1. 程式人生 > >C語言入門第十八篇,字串

C語言入門第十八篇,字串

字串可能前面會有一點點提及,這裡仔細進行講解。 其實嚴格意義來說,c語言並沒有字串這個變數型別(c語言並不像c++或者其他高階語言有string這個型別),c語言的字串其實就是字元陣列。 我一般使用的方法宣告一個字串如下:

char *p="hello";
char q[]="world";

這裡我們聲明瞭兩個字串一個為hello,一個是world。但是你們發現我們一個用的是指標一個用的是陣列,如果這個地方不是很懂的話請大家可以看看我前面的這篇文章C語言入門第十六篇,再議指標。 我經常用陣列的方式,因為我們一般在處理問題的時候要輸入一個字串怎麼辦呢?如果用指標的話,必須要先申請記憶體,而陣列我指定一個大小就沒有那麼麻煩。

//輸入一個字串
char name[10];
scanf("%s",name);

其實我們在前面講結構體的時候在結構體裡面用了,不知道大家有沒有注意到。 我們可以直接用下面的語句輸出這個字串

printf("%s",p);

c語音內建了一個頭檔名字叫string.h。這裡面有常用的一些對字串處理的函式,我們來介紹介紹。 字串長度 strlen是c語言求出字串長度的函式。例項如下:

int len;
char *p="hello";
len=strlen(p);

當我們知道長度過後,因為字串是陣列,我們可以對數組裡面的每一個元素進行操作。例如每個元素:

int len,i;
char *p=
"hello"; len=strlen(p); for(i=0;i<len;i++){ print("%c\n",p[i]); }

字串比較 有時候會對字串進行比較,函式為strcmp,這個函式傳入兩個字串,如果前者大於後者返回小於0,相等返回0,小於返回大於0,所以我們在判斷字串是否相等的時候就判斷strcmp返回值是否為0。

char *p="hello";
char q[]="world";
if(strcmp(p,q)>0){
	printf("前者大\n")}else if(strcmp(p,q)==0){
	print("兩者相等\n")}else{
	print("後者大\n"
); }

字串拼接 上面很多例子都聲明瞭一個p,q我們能不能他p,q放在一個變數裡面呢?當然可以,使用函式strcat。

char *p="hello";
char q[]="world";
char message[20]={'\0'};
strcat(message,p);
strcat(message,q);
printf("%s\n",message);

這裡我們聲明瞭一個新的陣列叫message來存放p和q拼接成的新字串。

總結 這張主要介紹一下字串,在acm和藍橋杯中程序會遇到處理字串的題目,至於平時開發中我就不太清楚了(畢竟我不是專業搞c和c++開發的)。必須熟悉他的常用函式,這裡舉了三個函式的例子,本來想再多舉例一些,但是我覺得沒有必要,因為你只有瞭解了一個,我相信其他的都是看一眼就懂的。c語言中字串就是字元陣列。 ps:從上一章開始我就不會去貼去完整的程式碼了,有些程式碼需要你們去加上例如#include<stdio.h>和int main()以及一些應該寫入的標頭檔案這些基本的東西,從一開始我就說過學習c語言沒有捷徑,多敲才是王道,大家把我給的程式碼放入編譯器多跑跑一定沒錯的。 練習 1.嘗試使用string.h標頭檔案中的查詢,分割等等的函式。 2.編寫一個程式,程式要求輸入一個長度不大於20的英文字串,統計各個字元出現的次數(假設都是小寫吧)。