輸入
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()函式 :
1char *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.字串陣列和初始...