第6章 利用數組處理批量數據
一批具有同名的同屬性的數據就組成一個數組(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章 利用數組處理批量數據