二者都是從終端讀入字符串。功能為
創(chuàng)新互聯(lián)是一家專業(yè)提供河口企業(yè)網(wǎng)站建設,專注與網(wǎng)站設計、成都網(wǎng)站建設、HTML5、小程序制作等業(yè)務。10年已為河口眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進行中。
1、 gets功能為讀入一行,并將換行符轉換為字符串結束符。
2、 scanf("%s",s);讀入時,遇到空白字符,包括空格,制表符,換行符時均會停止輸入。
從功能上可以看出不同之處:
1 終止條件不同。gets只有遇到\n時才會結束輸入,而scanf遇到空格或制表符時,也會結束輸入。
比如輸入"test string\n"。
用gets得到的字符串為"test string", 二用scanf得到的是"test"。
2 終止后,對終止字符處理不同。
比如輸入為"test\nabcd"。
執(zhí)行gets后,\n不會留在緩沖區(qū)中,即這時調(diào)用getchar得到的字符是'a'。
執(zhí)行scanf后,\n會留在緩沖區(qū),這時調(diào)用getchar得到的字符是'\n'。
應該是gets_s函數(shù)吧
對應頭文件stdio.h
原型:
char?*gets_s(char?*buffer,size_t?sizeInCharacters);
調(diào)用形式:
gets_s(buffer,sizeInCharacters)?;
其中第二參數(shù)就是允許的輸入長度, 這里的size應該分配為buffer-1的長度,因為函數(shù)自動為'\0'分配空間的時候會溢出。和gets的區(qū)別就是gets讀入不限制輸入長度,所以在2011年12月,ANSI 采納了 ISO/IEC 9899:2011 標準,標準中刪除了 gets()函數(shù),使用一個新的更安全的函數(shù)gets_s()替代
//摘自百度百科
#include?stdio.h//gets_s()用法
#define?CH?20
int?main(void)
{
char?ch[CH];
printf("請輸入你的名字:\n");
gets_s(ch,CH);?????????????//這里不能用gets_s(ch);
printf("這是你的名字:%s\n",?ch);
return?0;
}
1、gets() 函數(shù)是從鍵盤輸入字符串,該函數(shù)只有一個參數(shù)。參數(shù)類型為 char* 型,即 str 可以是一個字符指針變量名,也可以是一個字符數(shù)組名。打開編輯器,新建一個c語言文件,引入標準庫并新建主函數(shù):
2、gets() 函數(shù)的功能是從輸入緩沖區(qū)中讀取一個字符串存儲到字符指針變量 str 所指向的內(nèi)存空間,這里的程序是用gets函數(shù)輸入字符串,可以看到不像scanf那樣需要使用%號,gets函數(shù)中直接傳入字符串即可:
3、最后運行下程序,輸入“i love you”,可以看到gets函數(shù)可以直接輸出空格,而scanf函數(shù)輸出空格則需要使用轉義字符實現(xiàn),因此gets函數(shù)的使用要比scanf簡潔的多。以上就是gets函數(shù)使用方法的演示: