在前面從鍵盤輸入字符串是使用 scanf 和 %s。其實還有更簡單的方法,即使用 gets() 函數(shù)。該函數(shù)的原型為:
為湖濱等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及湖濱網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、成都網(wǎng)站建設(shè)、湖濱網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
# include stdio.h
char *gets(char *str);
這個函數(shù)很簡單,只有一個參數(shù)。參數(shù)類型為 char* 型,即 str 可以是一個字符指針變量名,也可以是一個字符數(shù)組名。gets() 函數(shù)的功能是從輸入緩沖區(qū)中讀取一個字符串存儲到字符指針變量 str 所指向的內(nèi)存空間。
下面將前面中使用 scanf 輸入字符串的程序改一下:
# include stdio.h
int main(void)
{
char str[20] = "\0";? //字符數(shù)組初始化\0
printf("請輸入字符串:");
gets(str);
printf("%s\n", str);
return 0;
}
輸出結(jié)果是:
請輸入字符串:i love you
i love you
擴展資料:
從stdin流中讀取字符串,直至接受到換行符或EOF時停止,并將讀取的結(jié)果存放在buffer指針所指向的字符數(shù)組中。換行符不作為讀取串的內(nèi)容,讀取的換行符被轉(zhuǎn)換為‘\0’空字符,并由此來結(jié)束字符串。
讀入成功,返回與參數(shù)buffer相同的指針;
讀入過程中遇到EOF(End-of-File)或發(fā)生錯誤,返回NULL指針。所以在遇到返回值為NULL的情況,要用ferror或feof函數(shù)檢查是發(fā)生錯誤還是遇到EOF。
參考資料來源:百度百科-gets
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ù)輸出空格則需要使用轉(zhuǎn)義字符實現(xiàn),因此gets函數(shù)的使用要比scanf簡潔的多。以上就是gets函數(shù)使用方法的演示:
gets()用于從標準輸入流stdin讀入一個整行(以 或EOF)結(jié)束,寫入ptr指向的字符數(shù)組,并返回這個指針;出錯或遇到文件結(jié)束時則返回NULL。行末的 從流中取出,但不寫入數(shù)組。gets()不檢查被寫入的數(shù)組大小。
擴展資料
gets從標準輸入設(shè)備讀字符串函數(shù),其可以無限讀取,不會判斷上限,以回車結(jié)束讀取,所以程序員應(yīng)該確保buffer的空間足夠大,以便在執(zhí)行讀操作時不發(fā)生溢出。
C語言是一門面向過程、抽象化的通用程序設(shè)計語言,廣泛應(yīng)用于底層開發(fā)。C語言能以簡易的方式編譯、處理低級存儲器。
C語言是僅產(chǎn)生少量的機器語言以及不需要任何運行環(huán)境支持便能運行的高效率程序設(shè)計語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著跨平臺的'特性,以一個標準規(guī)格寫出的C語言程序可在包括一些類似嵌入式處理器以及超級計算機等作業(yè)平臺的許多計算機平臺上進行編譯。
c語言,gets()函數(shù)用來從標準輸入設(shè)備(鍵盤)讀取字符串直到換行符結(jié)束,但換行符會被丟棄,然后在末尾添加字符。其調(diào)用格式為:gets(s)。其中s為字符串變量(字符串數(shù)組名或字符串指針)。如果為單個字符指針,編譯連接不會有錯誤,但運行后內(nèi)存溢出錯誤。 擴展資料
gets(s)函數(shù)與scanf("%s",s)相似,但不完全相同,zd使用scanf("%s",s) 函數(shù)輸入字符串時存在一個問題,就是如果輸入了空格會認為字符串結(jié)束,空格后的字符將作為下一個輸入項處理,但gets()函數(shù)將接收輸入的整個字符串直到遇到換行為止。
gets(s)函數(shù)可以無限讀取,不會判斷上限,以回車結(jié)束讀取,所以程序員應(yīng)該確保buffer的空間足夠大,以便在執(zhí)行時不發(fā)生溢出。