c語言輸入gets
A. gets在c語言中什麼意思
c語言里gets(a) 表示輸入一個字元串到數組a,a表示讀取一個字元串存入a中,字元串輸入結束標志為換行符。
gets從標准輸入設備讀字元串函數,其可以無限讀取,不會判斷上限,以回車結束讀取,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。
(1)c語言輸入gets擴展閱讀:
注意
因為本函數可以無限讀取,易發生溢出。如果溢出,多出來的字元將被寫入到堆棧中,這就覆蓋了堆棧原先的內容,破壞一個或多個不相關變數的值。
這個事實導致gets函數只適用於玩具程序,為了避免這種情況,我們可以用fgets(stdin) (fgets實際上可以讀取標准輸入,即大多數情況下的鍵盤輸入),具體參閱fgets詞條)來替換gets()。在V7的手冊(1979年)中說明:為了向後兼容,gets刪除換行符,gets並不將換行符存入緩沖區。
由於可以無限讀取,所以在2011年12月,ANSI 採納了 ISO/IEC 9899:2011 標准,標准中刪除了 gets()函數,使用一個新的更安全的函數gets_s()替代(具體用法看下面示例)。
B. C語言中gets函數與getchar函數有什麼區別
C語言中gets函數與getchar函數的區別
一、函數輸入方面
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. c語言關於gets函數的輸出輸入問題
char
str[100];
while(
gets(str)
!=
EOF
)
{
.....字元串處理
}
當在空行時,按ctrl+z回車,可結束輸入
D. C語言gets(password1);什麼意思
gets(password1); 這是函數調用語句,函數名 gets,參數是 password1。
gets 是 c語言標准輸入函數,功能是 從鍵盤輸入 讀入 一行字元串,存放到 password1 里。
這里 的 password1 顧名思義 是 口令,密碼。
即 從鍵盤輸入 讀入 password。
函數原型是: char * gets ( char * str );
E. C語言 gets輸入字元串
struct
stuinf
{
int
num;
char
name[20];
char
sex;
int
age;
int
tel;
char
addr[40];
};這個結構體
放在主函數外面,在printf("input
name:");gets(student1.name);後面加一個getchar();gets(student1.addr);也加一個getchar();
F. C語言gets函數的用法,能用代碼舉個例子么
c語言,gets()函數用來從標准輸入設備(鍵盤)讀取字元串直到換行符結束,但換行符會被丟棄,然後在末尾添加'