C語言 字串

2021-07-16 17:18:49 字數 2216 閱讀 9056

0727

第八章字串

一、字串定義:以』\0』作為結尾標識的一串字元。

字串在記憶體中儲存時,是以字元陣列形式儲存。

字串的管理方式(表示方式):字元指標和字元陣列。

字串與字元陣列:儲存形式相同,但是字串必須有結尾識』\0』。

二、字串初始化:

1)char*p=「hello」;//字元指標管理字串(字元指標儲存於棧區)

//將字串首位址存入指標變數p中;其中「hello」儲存於文字常量區。

//1)字元指標管理字串注意:指標p對字串」hello」只有讀的許可權,並不能對字串「hello」(即文字常量區)的內容修改。如:p=「world」。相當於修改文字常量區的自讀內容。會使系統崩潰(總之:不能通過指標修改文字常量區中的內容)

2)char c[6]=「hello」;//字元陣列管理字串(陣列c儲存於棧區)

//字串儲存於字元常量區,對陣列的賦值相當於將字串「hello」逐個拷貝。到』\0』為止。

3)char c1=「hello」;//同上,陣列的大小根據賦值的字串大小分配。

//一般為了防止內容溢位,採用3)這種初始化方式。

//2)和3)字元陣列管理字串注意:(strlen作用:求字串的長度(不包括『\0』)引數:字串首位址)

修改字串完成後,需要保證陣列中儲存的依舊為字串(即存在『\0』結尾),否則以%s格式輸出可能會出現亂碼。

三、字串操作函式

1> strlen(char* str);//計算字串的長度,字元陣列不計算『\0『;

2> strcpy(char *str1,const char *str2)//複製拷貝字串。str1:目的位址;str2:源位址。

注意:第二個引數為const型別是為了防止通過指標修改str2。

實際上是講

例:char a[20];

char* p = (char*)」hello」;

for(int i=0;ia[i]=p[i];//此時也將字元陣列p最後一位的『\0『也賦給字元陣列a。這樣陣列a中存的是字串。如果沒有將』\0『賦給陣列a,則陣列a中存的只是字元,並不是字串。(字串的定義。)

}printf(「%s\n」,a);

strcpy(a,」hello」);//hello的型別:const char*。將「hello」的首位址作為實參。

1)char *p=「hello」;

strcpy(p,」world」);//不合法。因為:p「指向」的記憶體空間為文字常量區中的空間(許可權為唯讀)

2)char *q;

strcpy(q,」hello」);//不合法。因為:指標並沒有」指向「一塊有效記憶體空間,沒有辦法盛放字串。

補充:printf(char* str1);scanf(char* str2);gets(char* str3);//單指字串的輸入和輸出,這裡不考慮其他型別。

printf(要輸出的字串的首位址);

scanf(可以寫入的記憶體空間的首位址);//輸入字串以空格或回車結束。

gets(char* str3);//輸入字串以回車結束。

作業一:自定義函式求字串長度(strlen)

int array_length(char *p)

return num;

}作業二:自定義函式實現strcpy

void str_cpy(char *p,const char *q)

0728

接0727

三、字串操作函式

3> strcmp:作用:實現兩個字串的比較。(逐個比較字元的ascii碼)

strcmp(引數一,引數二);const char* 例:「hello」

返回值型別:int

>0:引數一「指向」的字元引數二「指向」的字串;

==0:++++++++++++++==++++++++++++++++;

<0:++++++++++++++++

四、字串陣列:相同型別資料的集合

char* a[10];

typedef char* string;//string代替char*

string a[10];//等效於char* a[10];

C語言字串 字串排序

本題要求編寫程式,讀入5個字串,按由小到大的順序輸出。輸入為由空格分隔的5個非空字串,每個字串不包括空格 製表符 換行符等空白字元,長度小於80。按照以下格式輸出排序後的結果 after sorted 每行乙個字串 red yellow blue green white after sorted b...

C語言 字串

char str lnj 字串變數 l n j 0 printf str size lu n sizeof str 字元陣列 這個並不是字串,而是字元陣列 char charvalues 如何輸出字串變數,s str 陣列的名稱,陣列的名稱就是陣列的位址 s的原理,從傳入的 位址 開始逐個取出,直到...

c語言字串

字串 字串1 概念 1.1 定義 1.1.1 用雙引號引起來的多個字元 1.2 兩個連續的雙引號中間是空格或回車,則兩個字串自動連在一起 1.3 遇見 0字串結束,0可以提前終止字串 1.4 初始化 1.4.1 char str 6 1.4.2 char str hello 編譯時自動給 加6 1....