2015-10-19 50 views
-2

爲什麼gets()在這裏要求字符串。我的意思是,爲什麼它沒有使用前一個printf()中的換行符,程序只是終止? 是的,我知道我應該使用fgets()和類似的東西。請不要提及它。對於參比一般gets()將輸入作爲 n在它之上的printf()的末尾

#include <stdio.h> 

main() 
{ 
    char str[30]; 
    printf("\n"); 
    gets(str); 
    puts(str); 
} 
+0

您的假設不正確,gets()不會使用先前printf()語句的輸出。請解釋你做了什麼,會發生什麼,以及你期望發生什麼。 – nos

回答

3

char *gets(char *str)該手冊:

讀取從stdin並將其存儲到所述串的線指向的, 海峽。當讀取換行符時或到達文件結尾時,停止,以先到者爲準。

從手冊的printf:

函數printf()和vprintf()輸出寫入到stdout,所述 標準輸出流;

如手冊所述,getsstdin讀取一行。

功能printf寫入stdout

因此gets將不會讀取什麼printf正在寫。

相關問題