C語言中gets函數與getchar函數的區別
創新互聯主營靜海網站建設的網絡公司,主營網站建設方案,重慶APP軟件開發,靜海h5小程序設計搭建,靜海網站營銷推廣歡迎靜海等地區企業咨詢
一、函數輸入方面
1、gets()函數用來從標準輸入設備(鍵盤)讀取字符串直到回車結束,但回車符不屬于這個字符串。其調用格式為:gets(s);s為字符串變量(字符串數組名或字符串指針),gets(s)函數與scanf("%s", s)相似,但不完全相同。
2、而getchar函數運行時字符是連續輸入的,運行結果卻是正確的,這是因為輸入字符后,它們暫存于鍵盤的緩沖區中,然后由getchar函數從鍵盤緩沖區中一個一個的取出來。就是如果輸入了空格會認為輸入字符串結束,空格后的字符將作為下一個輸入項處理,但gets() 函數將接收輸入的整個字符串直到回車為止。
二、字符輸入方面
1、gets()函數可以用于對字符串的輸入,不需要將字符串拆分成一個一個的字符進行輸入。
2、而getchar函數只能用于單個字符的輸入,一次輸入一個字符。程序的功能是輸入一個字符,顯示一個字符,回車換行,再輸入并顯示一個字符。
三、輸出格式
1、gets函數是輸入一行字符串,以回車結束,并且回車鍵會被過濾掉,不會被讀回到字符串中。
2、而getchar()是讀答取一個字符,包括回車鍵也會被讀成一個字符。這個程序在輸入name[i]前,用getchar()把之前scanf("%d",num[i]);中,輸入整數后按的回車鍵給讀走,否則這個回車鍵會導致gets直接讀到一個空字符串。
c語言,gets()函數用來從標準輸入設備(鍵盤)讀取字符串直到換行符結束,但換行符會被丟棄,然后在末尾添加'\0'字符。其調用格式為:gets(s)。其中s為字符串變量(字符串數組名或字符串指針)。如果為單個字符指針,編譯連接不會有錯誤,但運行后內存溢出錯誤。
擴展資料:
gets(s)函數與scanf("%s",s)相似,但不完全相同,使用scanf("%s",s) 函數輸入字符串時存在一個問題,就是如果輸入了空格會認為字符串結束,空格后的字符將作為下一個輸入項處理,但gets()函數將接收輸入的整個字符串直到遇到換行為止。
gets(s)函數可以無限讀取,不會判斷上限,以回車結束讀取,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。
在前面從鍵盤輸入字符串是使用 scanf 和 %s。其實還有更簡單的方法,即使用 gets() 函數。該函數的原型為:
# include stdio.h
char *gets(char *str);
這個函數很簡單,只有一個參數。參數類型為 char* 型,即 str 可以是一個字符指針變量名,也可以是一個字符數組名。gets() 函數的功能是從輸入緩沖區中讀取一個字符串存儲到字符指針變量 str 所指向的內存空間。
下面將前面中使用 scanf 輸入字符串的程序改一下:
# include stdio.h
int main(void)
{
char str[20] = "\0";? //字符數組初始化\0
printf("請輸入字符串:");
gets(str);
printf("%s\n", str);
return 0;
}
輸出結果是:
請輸入字符串:i love you
i love you
擴展資料:
從stdin流中讀取字符串,直至接受到換行符或EOF時停止,并將讀取的結果存放在buffer指針所指向的字符數組中。換行符不作為讀取串的內容,讀取的換行符被轉換為‘\0’空字符,并由此來結束字符串。
讀入成功,返回與參數buffer相同的指針;
讀入過程中遇到EOF(End-of-File)或發生錯誤,返回NULL指針。所以在遇到返回值為NULL的情況,要用ferror或feof函數檢查是發生錯誤還是遇到EOF。
參考資料來源:百度百科-gets
新聞標題:c語言輸入函數gets,C語言輸入函數怎么用
瀏覽地址:http://m.kartarina.com/article14/dseeige.html
成都網站建設公司_創新互聯,為您提供網站排名、網站改版、品牌網站設計、軟件開發、虛擬主機、搜索引擎優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯