當要從螢幕輸入一字串至緩衝區時,記住絕對不要用gets()函式!man page中的bugs已說得很清楚了,gets()函式的存在只是為了相容以前的程式,該函式介面設計得很有問題,就像strcpy()函式一樣,使用者提供乙個緩衝區但卻不能指定緩衝區的大小,這很可能導致緩衝區溢位錯誤。使用gets()函式甚至比strcpy()函式更危險,因為strcpy()的輸入和輸出都來自程式內部,只要程式設計師小心點是可以避免錯誤的;但gets()函式讀取的輸入直接來自程式外部,使用者很可能通過標準輸入提供任意長的字串而導致溢位。
可以利用fgets()函式從螢幕上輸入一字串:
fgets(由檔案中讀取一字串,也可以從螢幕上輸入一字串,見範例。)
相關函式
open,fread,fscanf,getc
表頭檔案
include
定義函式
char * fgets(char * s,int size,file * stream);
s,資料儲存位置;size,讀取字串的最大數量;stream,指向file結構的指標。
函式說明
fgets()用來從引數stream所指的檔案內讀入字元並存到引數s所指的記憶體空間,直到出現換行字元、讀到檔案尾或是已讀了size-1個字元為止,最後會加上null作為字串結束。
返回值
fgets()若成功則返回s指標,返回null則表示有錯誤發生。
example:
#include
int main(void)
注意:stdin、stdout、stderr是三個file *指標,這三個指標在libc中定義,在stdio.h中宣告。printf向stdout(standard output)寫;scanf向stdin(standard input)讀;stderr(standard error)標準錯誤輸出。
執行
this is a test /*輸入*/
this is a test /*輸出*/
mysql函式 一 字元函式
一.字元函式 1.length str 字元長度函式 乙個漢字為三個字元 1 檢視某字串的長度 比如名字 select length sunchuangye 結果 11 2 根據字元長度進行倒序 比如名字 select id,username from t user order by length ...
ORACLE 常用函式(一) 字元函式
1 chr x 給出整數x,返回x在ascii值中對應的字元。2 ascii x 返回x對應的ascii值 3 concat string1,string2 連線兩個字串,相當於 例 select concat 123 777777 333 from dual 4 initcap string 返回...
面試基礎(一) 字串函式
最新更新strncpy strstr函式 1 include2 include3 using namespace std 45 6int my strlen const char str 715 return count 16 1718 19int main 20話說這真的不是很難,要說難一點的還是...