當前位置:首頁 » 編程語言 » C語言gets函數

C語言gets函數

發布時間: 2022-10-08 07:37:53

c語言gets函數的用法,能用代碼舉個例子么

c語言,gets()函數用來從標准輸入設備(鍵盤)讀取字元串直到換行符結束,但換行符會被丟棄,然後在末尾添加''字元。

其調用格式為:gets(s)。其中s為字元串變數(字元串數組名或字元串指針)。如果為單個字元指針,編譯連接不會有錯誤,但運行後內存溢出錯誤。

(1)C語言gets函數擴展閱讀:

gets()函數用於從緩沖區中讀取字元串,其原型如下:

char *gets(char *string);

gets()函數從流中讀取字元串,直到出現換行符或讀到文件尾為止,最後加上NULL作為字元串結束。

返回值,若成功則返回string的指針,否則返回NULL。

注意:由於gets()不檢查字元串string的大小,必須遇到換行符或文件結尾才會結束輸入,因此容易造成緩存溢出的安全性問題。

Ⅱ C語言中關於gets函數

函數名:
gets

能:
從流中取一字元串

法:
char
*gets(char
*string);
程序例:
#include
<stdio.h>
int
main(void)
{
char
string[80];
printf("Input
a
string:");
gets(string);
printf("The
string
input
was:
%s\n",
string);
return
0;
}
函數名:
puts

能:
送一字元串到流中

法:
int
puts(char
*string);
程序例:
#include
<stdio.h>
int
main(void)
{
char
string[]
=
"This
is
an
example
output
string\n";
puts(string);
return
0;
}

Ⅲ C語言里的gets()函數

對的,確實有舉出漏洞。以下是個人建議,希望對樓主有所幫助。
首先我們應該先認識一下gets和scanf的語法解構。如果要給一個字元串賦值,那我們可以這樣做。
int
a[10];
gets(a);
或是
for(i=0;i<10;i++)
scanf("%d",&a[i]);
由上我們可以看出,scanf每次只能輸入一個字元,然後回車,繼續循環。
而gets呢,需要把所有的字元串都輸入完後回車結束。這就造成了一個問題。
如果我們輸入的字元串多於10個單位呢?我們輸入的「a[20]」個空間的字元。
這就可能會產生溢出漏洞。

僅代表個人建議,希望對樓主有所幫助。

Ⅳ 在c語言中怎樣使用gets()函數!

gets從標准輸入設備讀字元串函數,可以無限讀取,不會判斷上限,以回車結束讀取,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。

1、從stdin流中讀取字元串,直至接受到換行符或EOF時停止,並將讀取的結果存放在buffer指針所指向的字元數組中。換行符不作為讀取串的內容,讀取的換行符被轉換為『』空字元,並由此來結束字元串。

2、讀入成功,返回與參數buffer相同的指針;讀入過程中遇到EOF(End-of-File)或發生錯誤,返回NULL指針。所以在遇到返回值為NULL的情況,要用ferror或feof函數檢查是發生錯誤還是遇到EOF。

3、本函數可以無限讀取,不會判斷上限,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。如果溢出,多出來的字元將被寫入到堆棧中,這就覆蓋了堆棧原先的內容,破壞一個或多個不相關變數的值。這個事實導致gets函數只適用於玩具程序,為了避免這種情況,我們可以用fgets(stdin) (fgets實際上可以讀取標准輸入(即大多數情況下的鍵盤輸入),具體參閱fgets詞條)來替換gets()。在V7的手冊(1979年)中說明:為了向後兼容,gets刪除換行符,gets並不將換行符存入緩沖區。

4、gets()函數用來從標准輸入設備(鍵盤)讀取字元串直到換行符結束,但換行符會被丟棄,然後在末尾添加''字元。其調用格式為:gets(s);其中s為字元串變數(字元串數組名或字元串指針)。

Ⅳ gets在c語言中什麼意思

c語言里gets(a) 表示輸入一個字元串到數組a,a表示讀取一個字元串存入a中,字元串輸入結束標志為換行符。

gets從標准輸入設備讀字元串函數,其可以無限讀取,不會判斷上限,以回車結束讀取,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。

(5)C語言gets函數擴展閱讀:

注意

因為本函數可以無限讀取,易發生溢出。如果溢出,多出來的字元將被寫入到堆棧中,這就覆蓋了堆棧原先的內容,破壞一個或多個不相關變數的值。

這個事實導致gets函數只適用於玩具程序,為了避免這種情況,我們可以用fgets(stdin) (fgets實際上可以讀取標准輸入,即大多數情況下的鍵盤輸入),具體參閱fgets詞條)來替換gets()。在V7的手冊(1979年)中說明:為了向後兼容,gets刪除換行符,gets並不將換行符存入緩沖區。

由於可以無限讀取,所以在2011年12月,ANSI 採納了 ISO/IEC 9899:2011 標准,標准中刪除了 gets()函數,使用一個新的更安全的函數gets_s()替代(具體用法看下面示例)。

Ⅵ c語言gets函數

gets()函數用於從緩沖區中讀取字元串,其原型如下:

char *gets(char *string);

gets()函數從流中讀取字元串,直到出現換行符或讀到文件尾為止,最後加上NULL作為字元串結束。所讀取的字元串暫存在給定的參數string中。

【返回值】若成功則返回string的指針,否則返回NULL。

注意:由於gets()不檢查字元串string的大小,必須遇到換行符或文件結尾才會結束輸入,因此容易造成緩存溢出的安全性問題,導致程序崩潰,可以使用fgets()代替。

(6)C語言gets函數擴展閱讀:

功能

從stdio流中讀取字元串,直至接受到換行符或EOF時停止,並將讀取的結果存放在buffer指針所指向的字元數組中。換行符不作為讀取串的內容,讀取的換行符被轉換為『』空字元,並由此來結束字元串。

返回值

讀入成功,返回與參數buffer相同的指針;讀入過程中遇到EOF(End-of-File)或發生錯誤,返回NULL指針。所以在遇到返回值為NULL的情況,要用ferror或feof函數檢查是發生錯誤還是遇到EOF。

注意

本函數可以無限讀取,不會判斷上限,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。如果溢出,多出來的字元將被寫入到堆棧中,這就覆蓋了堆棧原先的內容,破壞一個或多個不相關變數的值。

這個事實導致gets函數只適用於玩具程序,為了避免這種情況,我們可以用fgets(stdin) (fgets實際上可以讀取標准輸入(即大多數情況下的鍵盤輸入),具體參閱fgets詞條)來替換gets()。在V7的手冊(1979年)中說明:為了向後兼容,gets刪除換行符,gets並不將換行符存入緩沖區。

熱點內容
嫁接睫毛加密 發布:2024-12-22 21:50:12 瀏覽:971
linuxbin文件的安裝 發布:2024-12-22 21:46:07 瀏覽:795
vlcforandroid下載 發布:2024-12-22 21:45:26 瀏覽:661
電腦做網關把數據發送至伺服器 發布:2024-12-22 21:44:50 瀏覽:428
新華三代理什麼牌子的伺服器 發布:2024-12-22 21:33:21 瀏覽:339
歡太會員密碼是什麼 發布:2024-12-22 20:57:28 瀏覽:71
sqllocaldb 發布:2024-12-22 20:07:08 瀏覽:123
如何找到我的伺服器 發布:2024-12-22 19:52:14 瀏覽:299
手掛機腳本游 發布:2024-12-22 19:38:00 瀏覽:429
層次原理圖如何編譯 發布:2024-12-22 19:27:17 瀏覽:371