c語言gets和scanf
❶ c語言,scanf%s和gets,不是沒區別嗎
二者都是從終端讀入字元串。
功能分別如下:
1、 gets功能為讀入一行,並將換行符轉換為字元串結束符。
2、 scanf("%s",s);讀入時,遇到空白字元,包括空格,製表符,換行符時均會停止輸入。
從功能上可以看出不同之處:
1 終止條件不同。gets只有遇到\n時才會結束輸入,而scanf遇到空格或製表符時,也會結束輸入。
比如輸入"test string\n"。
用gets得到的字元串為"test string", 二用scanf得到的是"test"。
2 終止後,對終止字元處理不同。
比如輸入為"test\nabcd"。
執行gets後,\n不會留在緩沖區中,即這時調用getchar得到的字元是'a'。
執行scanf後,\n會留在緩沖區,這時調用getchar得到的字元是'\n'。
❷ C語言中gets和scanf的區別
gets會將輸入回車前所有輸入的內容取出來,存放到一個字元數組,包括空格/tab,無論這些內容被空格/tab分成了幾段,gets都會將這行輸入完完整整的放到數組中,通俗點說就是gets會取一行,讀到換行為止。
scanf是格式化輸入,如果只使用最簡單的格式化字元串%s,那麼scanf只會取一個單詞,在輸入流中遇到空格/tab/換行,就會結束。比如輸入流中有"aa
bb
cc"的話,那麼執行scanf("%s",
s),s的值就會是aa,再次執行這句話,s的值就是bb,第三次就是cc。scanf會從輸入流中取多少怎麼取,取決於格式化字元串,也就是scanf的第一個參數;而gets則肯定會取出完整的一行。也就是說在scanf中,換行符等同於空格/tab,但gets中,換行符為讀取結束標志。
還有就是gets取出來的肯定是字元串,如果需要轉其他類型,則需程序中手動判斷;而sacnf就不一定了。
❸ c語言 gets與scanf的順序
應該是回車造成的問題,正常情況這兩個函數不應該混用的。
第一種情況,你在scanf與gets兩個函數中間加一個「getchar();」應該就能得到期望的結果了。
❹ c語言中gets函數和是scanf函數有什麼區別呢
一、指代不同
1、scanf:是C語言中的一個輸入函數。
2、gets:從標准輸入設備讀字元串函數。
二、讀取方式不同
1、scanf:是格式輸入函數,即按用戶指定的格式從鍵盤上把數據輸入到指定的變數之中。
2、gets:可以無限讀取,不會判斷上限,以回車結束讀取,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。
三、數據流向不同
1、scanf:函數 scanf() 是從標准輸入流stdin (標准輸入設備,指向鍵盤)中讀內容的通用子程序,可以說明的格式讀入多個字元,並保存在對應地址的變數中。
2、gets:從stdin流中讀取字元串,直至接受到換行符或EOF時停止,並將讀取的結果存放在buffer指針所指向的字元數組中。換行符不作為讀取串的內容,讀取的換行符被轉換為『 』空字元,並由此來結束字元串。
❺ C語言中scanf函數與get函數的區別
gets,如果初學的話,可以這么理解,他可以輸入空格
而scanf()不能。
比如要輸入i
am,然後讓他列印出來。那麼用
gets()
輸出時會是i
am
而用
scanf()
輸出時會是i
❻ C語言中scanf()與gets()函數的區別,哪一個可以讀入空格啊
1.scanf不能接受空格、製表符Tab、回車等;對末尾回車符的處理:把回車符保留在緩存中。
gets能夠接受空格、製表符Tab和回車等;對末尾回車符的處理:接收回車,但把回車替換為 。
2.scanf :當遇到回車,空格和tab鍵會自動在字元串後面添加'