1.字元陣列的初始化:char[10] = ; // a[0] = 'i', a[1] = ' ', a[2] = 'a', a[3] = 'm', a[4] = ' ', a[5] = 'h', a[6] = 'a' , a[7] ='a' ,a[8] = 'p', a[9] ='y'
2.引用乙個字元陣列中的元素:可以引用乙個字元陣列中的乙個元素,得到乙個字元
示例1:輸出乙個已知的字串
#include
int main()
;int i;
for(i=0;i<15;i++)
printf("\n");
return 0;
}3.字串和字串結束標誌
字串的有效長度和字元陣列的長度(人們比較關心字串的有效長度)
eg: 定義乙個字元陣列的長度為100,而實際有效字元只有40個
為測定字串的實際長度,c語言中規定了乙個「字串的結束標誌」,以字元『\0』作為結束標誌。
c系統在用字元陣列儲存常量時會自動加乙個 '\0' 作為結束符
與這個等價char a = ;//它的長度為11
char c[10] = ;//陣列的前五個元素為;'c' , 'h' , 'i' , 'n' , 'a' ,第六個元素為『\0』,後四個元素也設定為空字元『\0』。
eg: char c[5] = ; // 正確
char c[5] = ; //錯誤,應該為char c[6] = ;因為字串儲存常量時會自動在尾部加入結束符'\0'
4.字元陣列的輸入輸出
(1)逐個字元輸入輸出。用格式符「%c」輸入或輸出乙個字串。 //如示例1
(2)將整個字串一次輸入輸出 。用「%s」格式符。
//char c =;
//printf("%s\n",c);
// 用「%s」格式符輸出的時候,printf函式中的輸出項是字元陣列名,而不是陣列元素,所以為c.
5.使用字串處理函式
(1)puts函式——輸出字串的函式
其一般形式為:puts(字元陣列);
char str = ;
puts(str);
輸出:china
beijing
(2)gets函式——輸入字串的函式
其一般形式為:gets(字元陣列);
gets(str);
從鍵盤輸入:
computer
//puts 和gets函式只能輸入和輸出乙個字串,不能寫成puts(str1,str2);或gets(str1,str2);
(3)strcat函式——字串連線函式
strcat(str1,str2)//其作用是把兩個字串陣列中的字串連線起來把str2接到str1的後面,結果放在str1中,函式呼叫後得到乙個函式值——str1的位址。
eg:char str1 [30] = ;
char str2 = ;
printf("%s",strcat(str1,str2));
輸出:people's republic of china
(4)strcpy,strncpy函式——字串複製函式
<1> strcpy(str1,str2) //"字串複製函式",將str2複製到str1中去(全覆蓋)
eg:char str1[10],str2 = "china";
strcpy(str1,str2);
得到:str1為china\0\0\0\0\0
char str1[30] =;
char str2 = ;
printf("%s ",strcpy(str1,str2));
輸出結果:
china
<2> strncpy(str1,str2,n)//複製時將str2和其後面的'\0'一起複製到str1中,取代前面字元str1中的6個字元,而最後4個字元並不一定是'\0',而是str1中原有的最後四個位元組的內容
eg:char str1 [30] =;
char str2 =;
ptintf("%s ",strncpy(str1,str2,3));
輸出結果:
chiple's republic of
(5)strcmp函式——字串比較函式
<1>strcmp(str1,str2)//比較str1,str2;
str1 = st2; //0
str1>str2; //正數1
str1eg:
str1 =computer
str2 = compare//computer,computes
if(strcmp(str1,str2)>0)
printf("yes")
else if(strcmp(str1,str2) == 0)
printf("0");
else
printf("no");
<2>strncmp(str1,str2, n) //比較str1,str2中前n個字元的大小
(6)strlen函式——測字串長度的函式
strlen(str) //直接測字串的長度(不包括'\0')
eg:char str = "china";
printf("%d",strlen(str)); //結果為5直接測字串常量的長度
printf("%d",sizeof(str));//結果為6
char str[10] ="china";
printf("%d",strlen(str));//結果為5
printf("%d",sizeof(str));//結果為10
(7)strwr函式——轉換為小寫的函式
(8)strupr函式——轉換為大寫的函式
(9)strtok函式——字串分割
char *strtok(char *s,const *delim);//分解字串為一組標記串,s為要分解的字串,delim為要分隔的字串
eg:char s = "ab-cd:ef;gh:i-kl;mnop;qrs-tu:vwx-y:z";
char *delim = "-:";
char *p;
printf("%s ",strtok(s,delim));
while((p == strtok(null, delim)))
printf("%s ",p);
printf("\n");
輸出結果:
abcd ef;jh i jkl;mnop;qrs tu vwx y x
(10)memcpy函式——記憶體拷貝函式
void *memcpy(void *dest,const void *src, sizen_t n); //從源函式src所指的記憶體位址的起始位置開始拷貝n個位元組到目標dest所指的記憶體位址的起始位置中
<1>source和destin所指的記憶體區域不能重疊,函式返回指向destin的指標
<2>與strcpy相比,memcpy並不是遇到'\0'就結束,而是一定會拷貝完n個位元組
<3>若陣列destin本身已有資料,執行memcpy後,將覆蓋原有資料(最多覆蓋n個)
eg1:
char a[100],b[50];
memcpy(b,a,sizeof(b));與strcpy(a,b);意義相同 :把b記憶體的所有拷貝給a記憶體;
eg2:
char *s="golden global view";
char d[20];
memcpy(d,s+14,4);//s從第14個字元開始複製,向後連續複製4個字元
printf(「%s」,d);
getchar();
輸出結果為:view
eg3:
char src ="******";
char dest =「abcd123as5」;
printf("%s\n",dest);
memcpy(dest,src,strlen(src));
printf("%s \n",dest);
輸出結果為: abcd123as5
******3as5
字串,字串陣列,字串指標!!
字串 字元陣列實際上是一系列字元的集合,也就是 字串 string 字串陣列 在c語言中,沒有專門的字串變數,沒有string型別,通常就用乙個字元陣列來存放乙個字串。c語言規定,可以將字串直接賦值給字元陣列 在c語言中,字串總是以 0 作為串的結束符。上面的兩個字串,編譯器已經在末尾自動新增了 0...
字串,字元陣列
字元陣列的讀入 字元陣列的讀入有兩種方式,單字元賦值和字串賦值 1.單字元賦值 單字元賦值,可通過陣列下標方式或指標方式,引用陣列元素,進行賦值。char a 10 char ch a for i 0 i 10 i a i ch i 可通過陣列下標引用陣列元素,完成賦值 char p for p a...
字串,字元陣列
字元陣列的讀入 字元陣列的讀入有兩種方式,單字元賦值和字串賦值 1.單字元賦值 單字元賦值,可通過陣列下標方式或指標方式,引用陣列元素,進行賦值。char a 10 char ch a for i 0 i 10 i a i ch i 可通過陣列下標引用陣列元素,完成賦值 char p for p a...