字元陣列
char word =;
but, 這個叫字元陣列,並不是字串。
字串
char word=;
\0 就是代表乙個整數0.
字串是以0(整數0)結尾的一串字元
0或』\0』是一樣的,但是和』0』不同
0標誌字串的結束,但它不是字串的一部分。
計算字串長度的時候不包含這個0
字串以陣列的形式存在,以陣列或指標的形式訪問
更多的是以指標的形式。
string.h 有很多處理字串的函式。
char *str =」hello」; 這個str的指標,指向了乙個hello的字串
char word= 「hello」 這有乙個陣列,他為hello
char line[10] = 「hello」 這有乙個陣列,是十個這麼大,放了hello進去,但是他佔了6個部分。
「hello」會被編譯器變成乙個字元陣列放在某處,這個陣列的長度是6,結尾還有表示結束的0;
兩個相鄰的字串,編譯器會將兩個自動連線起來。
總結:
是以字元陣列的形態存在的。
不能用運算子對字串運算。
通過陣列的方式可以遍歷字串。
唯一特殊的地方是字串字面量可以用來初始化字元陣列。
標準庫提供了一系列的字串函式。
字串變數
char *s = 「hello,world!」;
char *s2 = 「hello,world!」;
兩者的位址是一樣的。位址很小,位於程式的**段,並且是唯讀的,不能改變值。只能讀,不能寫。
如果需要修改字串,則需要用陣列 char s = 「hello, world!」;如果有上面那段和這個在一起,那編譯器會將上面唯讀的部分,拷貝乙份到你這裡可處理的地方。
當我們需要乙個字串,需要指標還是陣列?
如果表示成乙個陣列,說明這個字串就在這裡。作為本地變數空間會被**。
如果作為乙個指標,我不修改它,它可以用作處理引數。同時動態分配空間。
因此,如果要構造乙個字串–用陣列。
如果要處理乙個字串–用指標。
字串可以表達為char*的形式, 但char*不一定是字串
只有字元陣列有結尾的0,才能說它是字串。
字串的輸入和輸出
字串的賦值
char *t=」title」;
char *s;
s=t ;
並沒有產生新的字串,只是讓指標s指向了t所指的字串,對s的任何操作就是對t做的。
char string[8];
scanf(「%s」,string);
printf(「%s」,string);
scanf中的%s只會讀入乙個單詞(到空格、tab或回車為止)
因為scanf是不安全的,因為不知道要讀的內容的長度。
安全的做法scanf(「%7s」,string); 7這個數字表明,我最多能讀7個字元。超過我就不要了。
剩下的會交給下乙個scanf。
注意:指標需要初始化。
「」這意味著乙個空的字串 第乙個數[0]=就是0
buffer=」「; 這個長度就只有1 放不下任何的字串。
字串函式
strlen strlen(const char *s) 返回s的字串長度(不包括0),const是保證不會修改字串的長度。
strcmp(const char *s1, const char *s2); 比較兩個字串。
返回0—代表相等; 返回1 代表1>2; 返回-1 代表1<2; 這個函式的執行原理實際是 字串1中的每乙個數值,去減字串2中對應的數值。 意思就是a[1]-b[1] a[2]-b[2].
strcpy(const char *s1, const char *s2) s2的內容,拷到s1裡。不管原來s1那個位置裡有什麼。老子就是要拷。
srtcat(const char *s1, const char *s2) s2拷貝到s1後面,返回s1.s1必須具有足夠的空間
安全的版本
str』n』cpy n代表最多能複製的上限。
str』n』cat
char *strchr(const char*s1,const char *s2) 從左開始字串中找字元c。找到了第乙個的位置的指標。
char *strrchr(const char*s2,const char *s2) 從右開始字串中找字元c
返回null則沒找到。
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....