字串處理之gets與scanf s 的區別

2021-08-26 15:24:09 字數 1431 閱讀 7623

1.scanf( )函式和gets( )函式都可用於輸入字串,但在功能上有區別。若想從鍵盤上輸入字串」hi hello」,則應該使用_gets_函式。

2.gets可以接收空格,回車結束,gets(s)是輸入一行;而scanf(%s)遇到空格、回車和tab鍵都會認為輸入結束,所有它不能接收空格。

char string[15]; gets(string); /遇到回車認為輸入結束/

scanf(「%s」,string); /遇到空格認為輸入結束/

所以在輸入整行時,應該使用gets輸入。

在c語言中,能構獲取字串的函式至少有兩個:

scanf()

所在標頭檔案:stdio.h

接受字串時:scanf(「%s」,字元陣列名或指標);

gets()

所在標頭檔案:stdio.h

語法:gets(字元陣列名或指標);

兩者在接受字串時:

scanf不能接受空格、製表符tab、回車等;

而gets能夠接受空格、製表符tab和回車等;

scanf返回的為接收到的變數值的個數;

gets(str) 在讀取成功的時候返回str,str儲存的是成功讀入的內容 在失敗的時候返回null,str的內容保持不變;

字串接受結束後自動加』\0』。

例1:

#include

.h>

main()

依次鍵入asd空格fg回車,asd空格fg回車,則ch1=」asd\0」,ch2=」asd fg\0」。

例2:

#include 

main()

依次鍵入asdfg回車,asdfg回車,則ch1=」asdfg\0」,c1=』\n』,ch2=」asdfg\0」,c2需輸入。

scanf :當遇到回車,空格和tab鍵會自動在字串後面新增』\0』,但是回車,空格和tab鍵仍會留在輸入的緩衝區中。

gets:可接受回車鍵之前輸入的所有字元,並用』\n』替代 『\0』.回車鍵不會留在輸入緩衝區中

gets()用到讀取字串,用回車結束輸入

scanf()可以讀取所有型別的變數

scanf可以讀取帶空格的字串

#include 

#include

int main()

字串處理之gets與scanf s 的區別

1.scanf 函式和gets 函式都可用於輸入字串,但在功能上有區別。若想從鍵盤上輸入字串 hi hello 則應該使用 gets 函式。2.gets可以接收空格,回車結束,gets s 是輸入一行 而scanf s 遇到空格 回車和tab鍵都會認為輸入結束,所以它不能接收空格。char stri...

字串處理之gets與scanf s 的區別

一 快速了解 1.scanf 函式和gets 函式都可用於輸入字串,但在功能上有區別。若想從鍵盤上輸入字串 hi hello 則應該使用 gets 函式。2.gets可以接收空格,回車結束,gets s 是輸入一行 而scanf s 遇到空格 回車和tab鍵都會認為輸入結束,所以它不能接收空格。ch...

字串處理函式fgets()和gets()

scanf 一次只能接受乙個單詞,不能接受一行 gets 接受一整行的輸入,輸入多少就讀取多少,但有可能輸入的長度和要賦值的變數目標不一致而導致緩衝區溢位,這也就意味著它可能會改變不屬於當前程式所在空間的資料,一次在新標準c11中已經被廢棄不用了,不提倡使用gets gets s 新標準c11中的可...