1. 程式人生 > >第6章 利用數組處理批量數據

第6章 利用數組處理批量數據

3.2 語法 格式符 對數 同時 花括號 常量表達式 鍵盤 can

一批具有同名的同屬性的數據就組成一個數組(array),s就是數組名

由此可知:

(1)數組是一組有序數據的集合。數組中各數據的排列是有一定規律的,下標代表數據在數組中的序號。

(2)用一個數組名(如s)和下標(如15)來唯一地確定數組中的元素,如s15就代表第15個學生的成績。

(3)數組中的每一個元素都屬於同一個數據類型。不能把不同類型的數據放在同一個數組中。

C語言規定用方括號中的數字來表示下標,如用s[15]表示s15,即第15個學生的成績。

6.1 怎樣定義和引用一維數組

一維數組是數組中最簡單的,它的元素只需要用數組名加一個下標,就能唯一確定。

6.1.1 怎樣定義一維數組

要想使用數組,就需要先定義數組,才能使用。下面是對數組的定義:

int a[10];

它表示定義了一個整形數組,數組名為a,此數組有10個整型元素。

定義一維數組的一般形式為:

類型符 數組名[常量表達式];

說明:

(1)數組名的命名規則和變量名相同,遵循標識符命名規則。

(2)在定義數組時,需要指定數組中元素的個數,方擴種的常量表達式用來表示元素的個數,即數組長度。

(3)常量表達式中可以包括常量和符號常量。不能包含變量;C語言不允許對數組的大小作動態定義,即數組的大小不依賴於程序運行過程中變量的值。

說明:如果在被調用的函數(不包括主函數)中定義數組,其長度可以是變量和非常量表達式。

void func(int n)

{

int a[2*n]; //合法,n的值從實參傳來

……

}

如果指定數組為靜態(static)存儲方式,則不能用“可變長數組”。如:

static int a[2*n]; //不合法,a數組指定為static存儲方式

6.1.2 怎樣引用一維數組元素

在定義數組並對其中的各元素賦值後,就可以引用數組中的元素。應註意:只能引用數組元素而不能一次整體調用整個數組全部元素的值。

引用數組元素的表示形式為:

數組名[下標]

如,a[0]就是數組a中序號為0的元素,它和一個簡單變量的地位和作用相似。“下標”可以是整形常量或整形表達式。如:

a[0] = a[5]+a[7]-a[2*3]

每一個數組元素都代表一個整數值

註意:定義數組時用到的“數組名[常量表達式]”和引用數組元素時用的“數組名[下標]”形式相同,但含義不同。如:

int a[10]; //這裏的a[10]表示的是定義數組時指定數組包含10個元素

t = a[6]; //這裏的a[6]表示引用a數組中序號為6的元素

例:將10個數組元素依次賦值為0,1,2,3,4,5,6,7,8,9,要求按逆序輸出。

編寫程序:

技術分享圖片
 1 #include <stdio.h>
 2 int main()
 3 {
 4     int i=0,a[10];
 5     printf("轉序前的排序為:");
 6     for(i=0;i<=9;i++)
 7     {
 8         a[i] = i;
 9         printf("%d ",a[i]);
10     }
11     printf("\n轉序後的排序為:");    
12     for(i=9;i>=0;i--)
13         printf("%d ",a[i]);
14     printf("\n");
15     return 0;
16 }
View Code 技術分享圖片
1 轉序前的排序為:0 1 2 3 4 5 6 7 8 9
2 轉序後的排序為:9 8 7 6 5 4 3 2 1 0
3 請按任意鍵繼續. . .
Code Result

註意:數組元素的下標從0開始,如果用“int a[10];”定義數組,則最大下標值為9,不存在數組元素a[10]。下面是常見的錯誤:

for(i = 1;i<=10;i++) //循環變量從1開始,變到10

a[i] = i; //下標從1開始,變到10

for(i = 10;i>=1;i--)

printf("%d",a[i]);

6.1.3 一維數組的初始化

為了使程序簡潔,常在定義數組的同時,給各數組元素賦值,這稱為數組的初始化。可以用“初始化列表”方法實現數組的初始化。

(1)在定義數組時對全部數組元素賦予初值。如:

int a[10] = {0,1,2,3,4,5,6,7,8,9};

將數組中各元素的初值順序放在一對花括號內,數據間用逗號分隔。花括號內的數據就稱為“初始化列表”。經過以上的定義和初始化之後,a[0] = 0,a[1] = 1…

(2)可以只給數組中的一部分元素賦值。如:

int a[10] ={0,1,2,3,4};

定義a數組有10個元素,但花括號內只提供5個初值,這表示只給前面5個元素賦初值,系統自動給後5個元素賦初值為0.

(3)如果想使一個數組中全部元素值為0,可寫成:

int a[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};

int a[10] = {0}; //未賦值的部分元素自動設為0

(4)在對全部數組元素賦初值時,由於數據的個數已經確定,因此可以不指定數組長度。如:

int a[5] = {1,2,3,4,5};

也可寫成:

int a[] = {1,2,3,4,5};

雖然沒有在方括號中指定數組的長度,但是系統會根據花括號中的數據的個數確定a數組有5個元素。但是,如果數組長度與提供的初值個數不相同,則方括號中的數組長度不能省略。如,想定義數組長度為10,就不能省略數組長度的定義,而必須寫成:

int a[10] = {1,2,3,4,5};

只初始化前5個元素,後5個元素為0.

說明:如果在定義數值型數組時,指定了數組的長度並對之初始化,凡未被“初始化列表”指定初始化的數組元素,系統會自動幫忙初始化。(如果是整型則初始化為0;如果是字符型數組,則初始化為‘\0’;如果是指針型數組,則初始化為NULL,即為空指針)。

6.1.4 一維數組程序舉例

例:用數組來處理球Fibonacci數列問題

編寫程序:

技術分享圖片
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int i;
 5     int s[25]={1,1};
 6     for(i=2;i<25;i++)
 7     s[i]=s[i-1]+s[i-2];
 8     for(i=0;i<25;i++)
 9     {
10         if(i%5==0&&i!=0)
11             printf("\n%12d",s[i]);
12         else
13             printf("%12d",s[i]);
14     }
15     printf("\n");
16     return 0;
17 }
View Code

6.2 怎樣定義和引用二維數組

怎樣定義二維數組呢?基本概念與方法和一維數組相似。

float p[3][6];

以上定義了一個float型的二維數組,第1維有3個元素,第2維有6個元素。每一維的長度分別用一對方括號括起來。

二維數組定義的一般形式為:

類型說明符 數組名[常量表達式][常量表達式]

如:

int a[3][4],b[5][10]

定義a為3*4(3行3列)的數組,b為5*10(5行10列)的數組。註意,不能寫成

int a[3,4],b[5,10]; //在一對方括號內寫兩個下標,錯誤

C語言對二維數組采用這樣的定義方式,使得二維數組可被看作是一種特殊的一維數組:它的元素又是一個一維數組。如,可把a看作是一個一維數組,它有3個元素:

a[0],a[1],a[2]

每個元素又是一個包含4個元素的一維數組,如:

技術分享圖片

此處把a[0],a[1],a[2]看作一維數組名。C語言的這種處理方法在數組初始化和用指針表示時顯得很方便;這將會後面有所體會。

C語言中,二維數組中元素排列的順序是按行存放的,即在內存中先順序存放第1行的元素,接著在存放第2行的元素。

註意:用矩陣形式(如3行4列形式)表示二維數組,是邏輯上的概念。能形象地表示出行列關系。而在內存中,各元素時連續存放的,不是二維的,是線性的。這點請務必明確。

C語言還允許使用多為數組。和二維數組一致,只是增加了一個括號:

int a[2][3][4] //定義三維數組a,它有2頁,3行,4列

多維數組在內存中的排列順序為:1維的下標變化最慢,最右邊的下標變化最快。

6.2.2 怎樣引用二維數組的元素

二維數組元素的表示形式為:

數組名[下標][下標]

如,arr[2][3]表示a數組中序號為2的行中序號為3的列的元素。下標應是整型表達式,如arr[2-1][2*2-1].不要出現a[2,3]、a[2-1,2*2-1]形式。

數組元素可以出現在表達式中,也可以被賦值:

b[1][2] = a[2][3]/2

註意:在引用數組元素時,下標值應在已定義的數組打下的範圍內。如:

int a[3][4]; //定義a為3*4的二維數組

……

a[3][4] = 3; //不存在a[3][4]元素

按以上的定義,數組a可用的“行下標”的範圍為0~2,“列下標”的範圍為0~3.用a[3][4]表示元素顯然超過了數組的範圍。

請嚴格區分在定義數組時用的a[3][4]和引用元素時的a[3][4]的區別。前者用a[3][4]來定義數組的維數和各維數的大小,後者a[3][4]中的3和4是數組元素的下標值;引用元素時,a[3][4]代表行序號為3、列序號為4的元素(行序號和列序號均從0起算)。

6.2.3 二維數組的初始化

可以使用“初始化列表”對二維數組初始化。“初始化列表”不理解的,請看前面的定義。

(1)分行給二維數組賦初值。

int a[3][4] ={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

這種賦初值方法比較直觀,把第1個花括號內的數組給第1行的元素,第2個花括號內的數據給第2行的元素……即按行賦初值

(2)可以將所有數據寫在一個花括號內,安數組元素在內存中的排列順序對個元素賦初值。如

int a[3][4] = {1,2,3,4, 5,6,7,8, 9,10,11,12};

效果與第1種賦值相同。但以第1中方法為好,界限清楚。用第2中方法如果數據多,則會寫成一大片,容易遺漏,也不容易檢查。

(3)可以對部分元素賦初值。如

int a[3][4] ={{1},{5},{9}};

它的作用只對各行第1列(即序號為0的列)的元素賦初值,其余元素值自動為0.賦初值後數組個元素為:

1

0

0

0

5

0

0

0

9

0

0

0

也可以對各行中的某一元素賦初值,如:

int a[3][4] = {{1},{0,6},{0,0,11}};

初始化後的數組元素如下:

1

0

0

0

0

6

0

0

0

0

11

0

這種方法對0元素少時比較方便,不必將所有的0都寫出來,只需輸入少量數據。

也可以只對某幾行元素賦初值:

int a[3][4] = {{1},{5,6}};

初始化後的數組元素如下:

1

0

0

0

5

6

0

0

0

0

0

0

第3行不賦初值。

也可以對第2行不賦初值,如:

int a[3][4] = {{1},{},{9}};

(4)如果對全部元素都賦初值(即提供全部初始數據),則定義數組時對第1位的長度可以不指定,但第2維的長度不能省。換句話說,就是低維的長度一定要寫。如

int a[3][4] = {1,2,3,4, 5,6,7,8, 9,10,11,12};

與下面的定義等價:

int a[][4] = {1,2,3,4, 5,6,7,8, 9,10,11,12};

系統會根據數據總個數和第2位的長度算出第1維的長度。

在定義時也可以只對部分元素賦初值而省略第1維的長度,但應分行賦初值。如:

int a[][4] = {{0,0,3},{},{0,10}};

這樣的寫法,能通知編譯系統;數組共有3行。數組的各元素為:

0

0

3

0

0

0

0

0

0

10

0

0

從本節的介紹中可以看到:C語言在定義數組和表示數組元素時采用a[][]這種兩個方括號的方式,對數組初始化時十分有用,它使概念清楚,使用方便,不易出錯。

6.2.4 二維數組程序舉例

例:將一個二維數組行和列元素互換,存到另一個二維數組中。如:

a = 1 2 3 b = 1 4

  4 5 6 2 5

  3 6

編寫程序:

技術分享圖片
 1 #include <stdio.h>
 2 int main()
 3 {
 4          int a[2][3]={{1,2,3},{4,5,6}};
 5          int b[3][2],i,j;
 6          printf("array a:\n");
 7          for(i = 0; i<=1;i++)
 8          {
 9                  for(j = 0;j<=2;j++)
10                   {
11                           printf("%5d",a[i][j]);
12                           b[j][i] = a[i][j];
13                   }
14                   printf("\n");
15          }
16          printf("array b:\n");
17          for(i = 0; i<=2;i++)
18          {
19                   for(j = 0;j<=1;j++)
20                   {
21                           printf("%5d",b[i][j]);
22                   }
23                   printf("\n");
24          }
25          return 0;
26 }
View Code

6.3 字符數組

前面已經介紹過,字符型數據是以字符的ASCII碼值存儲在存儲單元中,一般占用一個字節。由於ASCII代碼屬於整數形式,故在C99標準中,將字符型歸納為整型類型中的一種。

註意:C語言中沒有字符串類型,字符串是存放在字符型數組中的。

6.3.1 怎樣定義字符數組

用來存放字符數據的數組是字符數組。字符數組中的一個元素存放一個字符。

定義字符數組的方法與定義數值型數組的方法類似,如:

char c[10];

c[0] = ‘i’; c[1] = ‘ ‘;……

由於字符型數據是以整數形式(ASCII代碼)存放的,因此也可以用整型數組來存儲字符數據,如:

int c[10];

c[0] = ‘i’; c[1] = ‘ ‘;……

6.3.2 字符數組的初始化

(1)用“初始化列表”,把各個字符依次賦給數組中各元素。

char c[10] = {‘i’, ‘ ’, ‘a’, ‘m’, ‘ ’, ‘h’, ‘a’, ‘p’, ‘p’, ‘y’};

如果在定義字符數組時不進行初始化,則數組中各元素的值是不可預料的。如果花括號中提供的初值個數(即字符個數)大於數組長度,則出現語法錯誤。如果初值個數小於數組長度,則只將這些字符賦給數組中前面的那些元素,其余的元素自動定為空字符(即’\0’)。如:

char c[10] = {‘i’, ‘ ’, ‘a’, ‘m’, ‘ ’, ‘h’};

結果可通過編譯運行查看。體會其中的差別。

(2)如果提供的初值個數與預定的數組長度相同,在定義時可以省略數組的長度,系統會自動根據初值個數確定數組長度。如:

char c[] = {‘i’, ‘ ’, ‘a’, ‘m’, ‘ ’, ‘h’, ‘a’, ‘p’, ‘p’, ‘y’};

數組c的長度自動定為10.

也可以定義和初始化一個二維數組;如:

char diamond[5][5] = {{‘ ’,’ ’,’*’},{’ ’ ,‘* ’ ,’ ’ ,’*’},

{’*’ ,’ ’ ,’ ’ ,’ ’ ,’*’},{’ ’ ,‘* ’ ,’ ’ ,’*’},{‘ ’,’ ’,’*’}};

6.6.3 怎樣引用字符數組中的元素

可以引用字符數組中的一個元素,得到一個字符。

例:輸入一個已知的字符串

編寫程序:

技術分享圖片
 1 #include <stdio.h>
 2 int main()
 3 {
 4          char c[10] = {i,  , a, m,  , h, a, p, p, y};
 5          int i = 0;
 6          for(i = 0; i<10 ; i++){
 7                   printf("%c",c[i]);
 8          }
 9          printf("\n");
10          return 0;
11 }
View Code 技術分享圖片
1 運行結果: i am happy
code result

6.3.4 字符串和字符串結束標誌

在C語言中,是把字符串作為字符數組來處理的。

字符串的有效長度和字符數組的長度是不一樣的概念。

C語言規定了一個“字符串結束標誌”,以字符’\0’為結尾作為結束標誌。

如果字符數組中存有若幹字符,前面9個字符都不是空字符(‘\0’),而第10個字符時’\0’,則認為數組中有一個字符串,其有效字符為9個(即有效長度為9)。也就是說,在遇到字符’\0’時,表示字符串結束,把它前面的字符組成一個字符串.

C系統在用字符數組存儲字符串常量時會自動加一個’\0’作為結束符。如,“C program”共有9個字符,在數組中它占有10個字節,最後一個字節是’\0’是由系統自動加上的。

當然,在定義字符數組時應估計實際字符串長度,保證數組長度始終大於字符串實際長度。

說明:’\0’代表ASCII碼為0的字符,從ASCII碼表中可以查到(在博客前面有貼出來過),ASCII為0的字符不是一個可以顯示的字符,而是一個“空操作符”,即什麽也不做。用它來作為字符串結束標誌不會產生附加的操作或增加有效字符,只起一個供辨別的標誌。

(3)用字符串常量來使字符數組初始化;如:

char c[] = {“I am happy”};

也可以省略花括號,和下面等價

char c[] = “I am happy”;

等價於

char c[] = {‘i‘, ‘ ‘, ‘a‘, ‘m‘, ‘ ‘, ‘h‘, ‘a‘, ‘p‘, ‘p‘, ‘y‘,’\0’};

註意觀察三種方式,這三種是等價的。

char c[10] = {‘i‘, ‘ ‘, ‘a‘, ‘m‘, ‘ ‘, ‘h‘, ‘a‘, ‘p‘, ‘p‘, ‘y‘,’\0’};

char c[] = {‘i‘, ‘ ‘, ‘a‘, ‘m‘, ‘ ‘, ‘h‘, ‘a‘, ‘p‘, ‘p‘, ‘y‘,};

這兩種是不等價的,前者的長度為11,後者的長度為10.

說明:字符數組並不要求它的最後一個字符為’\0’,甚至可以不包含’\0’。

6.3.5 字符數組的輸入輸出

字符數組的輸入輸出可以有兩種方法。

(1)逐個字符輸入輸出。用格式符“%c”輸入或輸出一個字符。如:

char c = ‘A’;

printf(“%c”,c);

(2)將整個字符串一次輸入或輸出。用“%s”格式符,意思是對字符串(String)的輸入輸出。

如:

char c[] = {“chian”};

printf(“%s\n”,c);

說明:

(1)輸出的字符中不包括結束符’\0’

(2)用“%s”格式輸出字符串時,printf函數中的輸出項是字符數組名,而不是數組元素名。如:

char c[] = {“chian”};

printf(“%s”,c[0]); //這是錯誤的,不能這樣輸出

printf(“%s\n”,c); //這是正確的,能正常輸出

(3)如果數組長度大於字符串的實際長度,也只能輸出到遇’\0’結束。

char c[10] = {“chian”}; //字符串長度為5,連’\0’共占6個字節

printf(“%s\n”,c);

只輸出字符串的有效字符“china”,而不是輸出10個字符。

(4)如果一個字符數組中包含一個以上’\0’,則遇上第一個’\0’時輸出就會結束。如:

char c[] = {‘i‘, ‘ ‘, ‘a‘, ‘m‘,’\0’ ,‘ ‘, ‘h‘, ‘a‘, ‘p‘, ‘p‘, ‘y‘};

printf(“%s\n”,c);

輸出結果:I am

(5)可以用scanf函數輸入一個字符串。如:

scanf(“%s”,c);

scanf函數中的輸入項c是已定義的字符數組名,輸入的字符串應短於已定義的字符數組的長度。如,已定義: char c[6];

從鍵盤輸入:

china 回車

系統會自動在china後面加一個’\0’結束符。

註意:scanf函數中的輸入項如果是字符數組名,不要再加地址符&,因為在C語言中數組名代表該數組的起始地址。下面的寫法不正確:

scanf(“%s”,&str); //str前面不應加&

(6)輸入字符串的方法:

printf(“%s”,c);

過程:按字符數組名c找到其數組起始地位,然後逐個輸出其中的字符,直到遇到’\0’為止。

6.3.6 使用字符串處理函數

在C函數庫中提供了一些用來專門處理字符串的函數。

1. puts函數——輸出字符串的函數

其一般形式為:

puts(字符數組)

其作用是將一個字符串(以’\0’結束的字符序列)輸出到終端。假如已定義str是一個字符數組名,且該數組已被初始化為“china”.則執行:

puts(str);

其結果在終端上輸出“china”。

用puts函數輸出的字符串中可以包含轉義字符。如:

char str[] = {“chian\nhappy”};

puts(str);

輸出:

china

happy

在輸出時將字符串結束標誌’\0’轉換為’\n’,即輸出完字符串後換行。

2.gets函數——輸入字符串的函數

其一般形式為:

gets(字符數組)

其作用是從終端輸入一個字符串到字符數組,並且得到一個函數值。該函數值是字符數組的起始地址。如:

gets(str); //假定str是已定義的字符數組

從鍵盤輸入:
computer

將輸入的字符串“computer”送給字符數組str(請註意,送給數組的共有9個字符,而不是8個字符),返回的函數值是字符數組str的起始地址。一般利用gets函數的目的是向字符數組輸入一個字符串,而不大關心起函數值。

註意:用puts和gets函數只能輸出或輸入一個字符串,不能寫成

puts(str1,str2); 或 gets(str1,str2);

3.strcat函數——字符串連接函數

其一般形式為:

strcat(字數數組1,字符數組2)

strcat是STRingCATenate(字符串連接)的縮寫。其作用是把兩個字符數組中的字符串連接起來,把字符串2接到字符串1後面,結果放在字符數組1中,函數滴啊用後得到一個函數值——字符數組1的地址。如:

char str1[30] = {“people’s republic of ”};

char str2[] = {“china”};

printf(“%s”,strcat(str1,str2));

輸出:

people’s republic of china

說明:

(1)字符數組1必須足夠大,以便容納連接後的新字符串。若在定義時改用str1[] = {“people’s republic of ”}; ,就會出現error ,因長度不夠。

(2)連接前兩個字符串的後面都有’\0’,連接時將字符串1後面的’\0’取消,只在新串最後保留’\0’。

4.strcpy和strncpy函數——字符串復制函數

其一般形式為:

strcpy(字符數組1,字符數組2)

strcpy是STRingCoPY(字符串復制)的簡寫。它表示“字符串復制函數”,作用是將字符串2復制到字符數組1中去。如:

char str1[10],str2[] = “china”;

strcpy(str1,str2);

說明:

(1)字符數組1必須定義得足夠大,以便容納被復制的字符串2.字符數組1的長度不應小於字符串2 的長度。

(2)“字符數組1”必須寫成數組名形式(如str1),“字符串2”可以是字符數組名,也可以是一個字符串常量。如:

strcpy(str1,”china”);

作用與前面相同。

(3)如果在復制前未對str1數組初始化或賦值,則str1各字節中的內容是無法預知的,復制時將str2中的字符串和其後的’\0’一起復制到字符數組1中,取代字符數組1中的前6個字符,最後4個字符並不一定是’\0’,而是str1中原有的最後4個字節的內容。

(4)不能用賦值語句將一個字符串常量或字符數組直接給一個字符數組。如:

str1 = “china”;

str2 = str1; //這是錯誤的。

只能用strcpy函數將一個字符串復制到另一個字符數組中去。用賦值語句只能講一個字符賦給一個字符型變量或字符型數組元素。

5.strcmp函數——字符串比較函數

其一般形式為:

strcmp(字符串1,字符串2);

strcmp是STRingCoMPare(字符串比較)的縮寫。它的作用是比較字符串1和字符串2.如:

strcmp(str1,str2);

strcmp(“china”,”korea”);

strcmp(str1,”Beijing”);

說明:字符串比較的規則是:將兩個字符串自左至右逐個字符相比(按ASCII碼值大小比較),直到出現不同的字符或遇到’\0’為止。

(1)如全部字符相同,則認為兩個字符串相等。

(2)若出現不相同的字符,則以第1對不相同的字符的比較結果為準。

如果參加比較的兩個字符串都是由英文字母組成,則有規律:在英文字典中在後面的為“大”。如:在computer在字典中的位置在compare之後,所以“computer”>“compare”。但應註意小寫字符比大寫字符“大”。所以“DOG”<“cat”

比較的結果由函數值帶回。

(1)如果字符串1=字符串2,則函數值為0

(2)如果字符串1>字符串2,則函數值為一個正整數

(3)如果字符串1<字符串2,則函數值為一個負整數

註意:對兩個字符串比較,不能用以下形式:

if(str1>str2)

printf(“yes”);

只能用:

if(strcmp(str1,str2)>0)

printf(“yes”);

6. strlen函數——測字符串長度的函數

其一般形式為

strlen(字符數組)

strlen是STRingLENgth(字符串長度)的縮寫。它是測試字符串長度的函數。函數的值為字符串中的實際長度(不包括’\0’)。

char str[10] = “china”;

printf(“%d”,strlen(str));

輸出結果不是10,也不是6,而是5.也可以直接測試字符串常量的長度,如:

strlen(“china”);

7.strlwr函數——轉換為小寫的函數

其一般形式為

strlwr(字符串)

strlwr是STRingLoWeRcase(字符串小寫)的縮寫。函數的作用是將字符串中大寫字母轉成小寫字母。

8.strupr函數——轉換為大寫的函數

其一般形式為

strupr(字符串)

strupr是STRingUPpeRcase(字符串大寫)的縮寫。函數的作用是將字符串中小寫字母轉成大寫字母。

以上介紹了常用的8種字符串處理函數,應當再次強調:庫函數並未C語言本身的組成部分,而是C語言編譯系統為方便用戶使用而提供的公共函數。當然,不同的編譯系統提供的函數數量和函數名、函數功能都不盡相同,必要時查一下庫函數手冊。

註意:在使用字符串處理函數時,應當在程序文件的開頭聲明

#include <string.h>

把”string.h”文件包含到本文件中。

第6章 利用數組處理批量數據