用fgets 函式從螢幕上輸入一字串

2021-06-07 15:46:49 字數 1153 閱讀 3205

當要從螢幕輸入一字串至緩衝區時,記住絕對不要用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話說這真的不是很難,要說難一點的還是...