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的英文字符串,統計各個字符出現的次數(假設都是小寫吧)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章