C語言入門 字串

2021-10-24 23:32:40 字數 3317 閱讀 6343

還是要繼續學習,每天給自己打氣。

字元陣列

char word = ;
這不是c語言的字串,不能用字串的方式做計算

char word = ;
區別就是最後多了乙個0,這就成為了字串

以0(整數0)結尾的一串字元

0或'\0'是一樣的,但和'0'不同

0標誌字串的結束,但它不是字串的一部分

計算字串長度的時候不包含這個0

字串以陣列的形式存在,以陣列或者指標的形式訪問,更多的是以指標的形式string.h裡有很多處理字串的函式

字串變數

char *str = "hello";

char word = "hello";

char line[10] = "hello";

字串常量

「hello」

「hello"會被編譯器變成乙個字元陣列放在某處,這個陣列的長度是6,結尾還有表示結束的0

兩個相鄰的字串常量會被自動連線起來

字串c語言的字串是以字元陣列的形態存在的

不能用運算子對字串做運算

通過陣列的方式可以遍歷字串

唯一特殊的地方是字串字面量可以用來初始化字元陣列

char *s = "hello world";
s是乙個指標,初始化為指向乙個字串常量

由於這個常量所在的地方,所有實際上s是const char* s ,但是由於歷史的原因,編譯器接受不帶const的寫法

但試圖對s所指的字串做寫入會導致嚴重的後果

如果需要修改字串,應該用陣列

char s = "hello , world!";
指標還是陣列
char *str = "hello";

char word = "hello";

陣列:可以讀,可以寫

指標:只能讀,不能修改

如果要構造乙個字串 ------>陣列

如果要處理乙個字串 ------>指標

char*是字串

字串可以表達為char*的形式

char*不一定是字串

本意是指向字串的指標,可能指向的是字元的陣列

只有它所指的字元陣列的結尾有0,才能說它所指的是字串

#include int main(void)

字串賦值
char *t = 'title';

char *s;

s = t;

並沒有產生新的字串,只是讓指標s指向了t所指的字串,對s的任何操作就是對t做的

字串輸入和輸出

char string[8];

scanf("%s" , string);

printf("%s" , string);

scanf讀入乙個單詞(到空格、tab、回車為止)

scanf是不安全的,因為不知道要讀入的內容的長度

常見錯誤

char *string;

scanf("%s" , string);

以為char*是字串型別,定義了乙個字串型別的變數string就可以直接使用了

由於沒有對string初始化0 , 所以不一定每次執行都出錯

int putchar(int c);
向標準輸出寫乙個字元

返回寫了幾個字元,eof(-1)表示寫失敗

int getchar(void);
從標準輸入讀入乙個字元

返回型別是int是為了返回eof(-1) windows --->ctrl-z

size_t strlen(const char *s);

返回s的字串長度(不包括結尾的0)

#include #include int main(int argc, char const *ar**)

//strlen=5

// 這個包括了字串最後的0

//sizeof=6

當然了,也可以自己寫乙個函式來計算字串長度

#include #include // 自定義方法來計算字串長度

int mylen(const char *s)

return idx;

}int main(int argc, char const *ar**)

int strcmp(const char *s1 , const char *s2);

比較兩個字串返回:

char* strcpy(char *restrict dst , const char * restrict src);

把src的字串拷貝到dst

restrict表明src和dst不重疊(c99)

返回dst,為了能連起**來

複製乙個字串

char *dst = (char*)malloc(strlen(src)+1);

strcpy(dst , src);

char* strcat(char *restrict s1 , const char *restrict s2);

把s2拷貝到s1的後面,接成乙個長的字串

返回s1

s1必須具有足夠的空間

但是這些函式都是不安全的,因為你不知道有沒有足夠的空間,所以

安全版本:如圖

返回null表示沒有找到

#include #include #include int main(int argc, char const *ar**)

複製給另乙個

#include #include #include int main(int argc, char const *ar**)

C語言入門 字串

在c語言中,沒有字串型資料,只能用字元陣列和字元指標來處理字串。如 char ca 10 或 char ca 10 或 char ca 10 hello 都表示ca這個字串中有10個字元 包括 0 後面多出的元素自動補 0。但是ca string 這樣的賦值語句是不合法的,後期賦值只能使用迴圈乙個乙...

c語言隨機生成字串 C語言快速入門 字串生成

假設我們現在正在開發一款文件管理類軟體。其中一項功能就是一次性建立多個名稱連續的資料夾,如icon1 icon2等等。整個名稱可以分作兩部分,前半部分是常量字串 icon 後半部分是編號字串。在使用迴圈語句生成名稱時,編號是數字,如果能將編號轉換為乙個字串,那麼我們就可以用strcat函式將兩部分組...

C語言入門(十六)之字串

如何定義字串變數,由於字串是同一種型別的資料組成,並且是有序的。而陣列就是用於儲存很多同一種型別的有序資料,所以可以使用陣列來儲存字串。注意 字串變數和普通的字元陣列有一定的區別。c語言規定,字串必須以 0結尾 作為字串的結束符號 所以字串變數的元素個數比字元陣列的元素個數多乙個 0 char st...