C語言 字串和字串函式

2022-07-04 16:42:15 字數 2030 閱讀 3497

輸入

gets() 函式 :

1.gets() 從標準輸入裝置讀取字串,以回車結束讀取,使用'\0'結尾,回車符'\n'被捨棄沒有遺留在緩衝區。

2.可以用來輸入帶空格的字串。

3.可以無限讀取,不會判斷上限,因此使用gets不安全,可能會造成溢位。

fgets() 和 fputs() 函式 :

1.fgets函式的第2個引數指明了讀入字元的最大數量.如果該引數是n, 那麼fgets會讀入n-1 個字元,或者讀到第乙個換行符為止

2.如果fgets函式讀到乙個換行符, 會儲存在字串中

3.fgets的第三個引數指明了要讀入的檔案

4.fputs不在字串的末尾新增換行符

s_gets()函式 :

1

char *s_gets(char *st, int

n)10 find = strchr(st, '\n'

);11

12if (*find) else18}

19}20return

ret_val;

21 }

scanf()函式 :

scanf() 和 gets() 函式類似 , 也存在一些潛在的缺點 . 如果輸入的內容過長 , scanf() 也會導致資料溢位

輸出:

puts()函式 :

使用方法 : 把字串的位址作為引數傳遞給它就可以

puts() 會自動新增換行符 , 切必須要有空字元 , 因為只有空字元它才會停止

fputs()函式 :

fputs(char *, stdout);

fputs()不會在輸出的末尾新增換行符

(puts應和gets配對使用 , fputs與fgets配對使用);

自定義輸入/輸出函式 :

while (string != 『\0』)

putchar(*string++);

字串函式 :

strlen(): 用於統計字串的長度

strcat(): 用於拼接字串 , 函式接受兩個字串作為引數 , 把第2個字串的備份附加在第1個字串末尾 , 並把拼接形成的新字串作為第1個字串 , 第2個不變

問題 : 無法檢查第1 個陣列是否能容納第2個字串 , 如果分配給第1個陣列的空間不夠大 , 多出來的字元就會溢位 (可以用strlen()函式 strlen(a) + strlen(b) + 1 <= size)

strncat(): 該函式的第3個引數制定了最大新增字元數 , 如strancat(a, b, 13) 將把b的內容附加給a , 在加到第13個字元或遇到空字元時停止 , 所以a應該足夠大 , 以容納原始字元 + 新增在後面的13個字元 + 末尾的空字元

strcmp(): 比較字串的內容 , (比較的是字串 , 不是字元 , 也不是字串的位址) , 如果兩個字串引數相同 , 就返回0 , 否則返回非零值

strncmp(): 可以限定只比較幾個字元

strcpy(): 用來拷貝整個字串 , strcpy的引數順序 , 第1個是目標字元 , 第2個是源字元

其他屬性 : 第一 , strcpy()返回型別是char * , 該函式返回的是第1個引數的值 , 即乙個字元的位址 , 第二 , 第1個引數不必指向陣列的開始

char *strchr(const char *s, int c)

功能:查詢字串s中首次出現c字元的位置

返回值:成功返回要查詢的字元第一次出現的位置,否則返回null。。。。

字串和字串函式

字元輸入輸出 getchar putchar ch getchar putchar ch 字串函式 字串輸入 建立儲存空間 接受字串輸入首先需要建立乙個空間來存放輸入的字串。char name scanf s name 上述的用法可能會導致程式異常終止。使用字串陣列 可以避免上述問題 char na...

字串和字串函式

1.字串字面量 字串常量 用雙引號括起來的內容稱為字串字面量,也叫字串常量。字串常量屬於靜態儲存類別,這說明如果在函式中使用字串常量,該字串只會被儲存一次,在整個程式的生命期內存在,計時函式被呼叫多次。用雙引號括起來的內容被視為指向該字串儲存位置的指標。hello 中的 hello 類似於乙個陣列名...

11 c語言字串和字串函式

一.表示字串和字串i o 字串是以空字元 0 結尾的char型別陣列。注意 如果char型別陣列沒有以 0結尾則不是乙個字串。1.字串字面量 字串常量 用雙引號括起來的內容稱為字串字面量,也叫字串常量。字串常量屬於靜態儲存類別,這說明如果在函式中使用字串常量,該字串只會被儲存一次。2.字串陣列和初始...