C語言之陣列和字串

2021-07-11 01:52:43 字數 3417 閱讀 4512

陣列的使用

//----對一維陣列的輸入

int a[5],i;

//陣列必須先定義後使用,且在定義時,必須指定陣列的長度。比如這裡不能這樣 int a.

for(i=0;i<5;i++)

scanf("%d",&a[i]);

//這裡i<5是給他限定輸入資料個數的範圍,也就是當輸入這麼多資料後,系統不再接收資料

//由於陣列元素儲存型別為int,所以在輸入乙個資料後,想要輸入下乙個資料,可以進行空格或者換行等非整形變數操作,但當char時未必。

/*****************************************

任意輸入一段字元,輸出各個大寫字母的個數

********************************************/

#include

#include

#include

int str[26];

int main()

for(i=0;i<26;i++)

printf("\n");

system("pause");

return

0;}

//----對二維陣列的輸入

int a[2][3],i,j;

for(i=0;i<2;i++) //一維陣列的注釋同樣類似於二維陣列

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

2.字串

字串:是一種以』\0』結尾的字元陣列,』\0』作用是標識字元的結束。

//eg:下面三種表示方式是等價的,其陣列長度均為6

char

str="china";

char

str=;

char

str=;

//但不等價於

char

str=; //陣列長度為5

補充:1:字元實際上就是整形資料,但只佔1位元組記憶體單元,用於儲存該字元所對應的ascii碼值。

其包括:1)常用字元,即直接輸入的用單引號括起來表示的。如』a』,』b』,』+』;

2)轉義字元,以\開頭具有特定含義的。如\absnrtv;\ddd(d是1~3位八進位制字元),\xhh(h是1~2位十六進製制字元),它們均為ascii碼。

2.字串:由雙引號括起來的字串行,且以』\0』為結束標誌。

字串存放形式如下:

3.字串跟字元陣列不是一回事!我們講的只是把字串放在字元陣列中!

這裡的字串是」china」,而字元陣列為str。

亦可以直接定義陣列長度:

char

str[10]="china"; //陣列長度為10,未指定單元字元為nul,其ascii碼值為0

//等價於

char

str[10]=

字元陣列記憶體映像表示如下:

下面簡要說明 字串操作常用函式

1.字串的輸入

1)gets :接收鍵盤的輸入,將輸入的字串存放在字元陣列中,指導遇到回車符時返回,其中回車符』\n』轉換成字串結束標誌』\0』來儲存。

呼叫格式:gets(字元陣列變數名);

eg :

char

str[10];

gets(str);

2)scanf :讀取輸入字元(忽略之前的空格)並儲存到字元陣列中,遇到空格或者回車符輸入操作停止。且會自動在字串後面加』\0』.

eg:

char

str[10];

scanf("%s",str); //這裡的str即是陣列首位址,故不能寫成&str.

//str在輸入字串時使用%s格式控制符.

利用scanf可連續輸入多個字串

char str1[10],str2[20],str3[30];

scanf("%s%s%s",str1,str2,str3);

一般為避免輸入的字串長度超過陣列的大小,可用%ns,n表示域寬限制。如果沒有遇到空格或者回車符,則在讀入n個字元後停止。

eg:

char

str[10];

scanf("%9s",str);

//最多可讀入9個非空格字元,且str最後乙個資料單元新增字串結束標誌'\0'.

2.字串的輸出

1)puts;與gets功能相反

2)printf;使用%s格式控制符,且與%s對應的位址引數字串某一字元的位址,printf將餘下的字元全部輸出,其中』\0』不會被輸出。

eg:

char name="john smith";

printf("the name is:%s\n",name);

printf("the last name is:%s\n",&name[5]);

輸出結果:

is:john smith

the last

name

is:smith

3.字串的長度(以下三個字串操作要包含的.h檔案為string.h)

eg:

char str="0123\0456789";

printf("%d",strlen(str)); //輸出結果為9,\045看做轉義字元

printf("%d",strlen(&str[5])); //輸出結果為4

注:若沒有』\0』,則上面輸出結果為10,5.

4.字串的複製

呼叫格式:strcpy(陣列1變數名,陣列2變數名);

功能:將字串2複製到字串1中去(陣列1的大小必須足夠大以便能存放2的所有字元,包括』\0』)

5.字串的比較

呼叫格式:strcmp(字串1,字串2);

功能:字串的大小不能用」>」「

若1>2,則返回乙個正整數,若1<2,則返回乙個負整數,若=,則返回0.

6.字串的連線

呼叫格式:strcat(陣列1變數名,陣列2變數名);

功能:將字串2連線到字串1的後面,包括結尾符』\0』.要保證字元陣列1的長度足夠大.

C語言之陣列 字串

陣列 一 陣列的定義和賦值 int ages 5 每個元素佔4個位元組,整個陣列的大小為4 元素個數5 int ages 定義陣列可以不宣告長度,後邊大括號裡的元素個數決定陣列的長度 int ages a a 65,所以這個陣列的長度為65 ages 0 29 為某乙個元素賦值或替換 二 陣列的遍歷...

C語言之字串,陣列

注意char a abcdef 與char a abcdef 的區別 1 字串存放的記憶體區域不同 前者存放在常量區,不可修改,後則存放在棧中,可以修改 2 變數a存放的內容不同 前者存放的是乙個位址,而後者存放的是字串 abcdef 因此使用sizeof它們的結果是不同的,分別是4和7 c 是靜態...

C語言之字串

字元就是符號 圖案,在計算機中以整數形式儲存,當需要顯示時會根據ascii表中的對應關係,顯示相應的符號或圖案。字元型別 char 的資料 如字元a,a,0,等 在記憶體中以對應的ascii碼存放,不同字元所對應的ascii碼見下表。計算機用乙個位元組 8個二進位制位 儲存乙個字元,例如,字元a的a...