字元 字串陣列

2021-07-30 20:26:06 字數 4007 閱讀 7775

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...