C語言,字串

2021-07-26 05:21:35 字數 2282 閱讀 8246

字元陣列

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