還是要繼續學習,每天給自己打氣。
字元陣列
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...