當前位置:首頁 » 編程語言 » c語言2個scanf
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言2個scanf

發布時間: 2023-03-21 07:22:21

c語言中,用兩個scanf,那兩個輸入值在同一行嗎

屏幕上輸入的字元,會暫存到緩存。不信,你可以一直按著鍵盤,不多會,你就會聽到系統發出嘟嘟的報警聲,說明緩沖區已經滿了。
scanf()函數只是從當前緩沖區取一個相應的字元;其中緩沖區的最後一個字元為'\n';
按你說的,可以用循環,接收字元同樣可以用getchar()函數。
char
ch;
while(1){
scanf("%c",&ch);
if(ch=='\n')
break;
/*
當輸入回車時,結蠢李螞束擾閉
*/帶埋
/*
對ch做相應處理
*/
}

㈡ C語言中,用兩個scanf,那兩個輸入值在同一行嗎

用兩個scanf,輸入的數值可以在同一行,輸入時注意兩個碼肢皮數之間運遲差用空格分開。

驗證:

#include<stdio.h>
voidmain(){
inta,b;
scanf("%d",&a);
scanf("%d",&b);
printf("%d%d",a,b);
}

運行示例:

可見,輸入的數值也可以不在同一行。

㈢ c語言中兩個scanf為什麼會出毛病

scanf裡面我沒聽說過能加\n。

但是關於字元的問題,我想是垃圾字元的緣故。以前我遇到過垃圾字元的問題。

我以前寫為了記住關於垃圾字元的問題,還寫到過blog上。復制來你看看吧~!~!

淺談C語言中的垃圾字元- -

在C語言中,如果使用字元型變數(就是char型)時在有連續輸入的情況下,很容易因為出現垃圾字元而導致程序的流程非法。
看下面,簡單的一段代碼:
#include "stdio.h"
main()
{
char a,b;
printf("input a:");
scanf("%c",&a); /*或a=getchar();*/
printf("a=%c\n",a);
printf("input b:");
scanf("%c",&b); /*或b=getchar();*/
printf("b=%c\n",b);
}
這段代碼確實挺簡單的,但是卻隱藏著很難發現的問題。當在執行了printf("input a:");這句後要求我們做輸入的時候,隨便輸入一個數,然後按回車,程序繼續往下執行。沒等渣寬我們做第二次輸入的時候程序就已經結束了。把scanf()換成getchar()也一樣存在問題。
為什麼會有這樣的問題呢?那是因為在我們做了第一次輸入時,並按下回車,使程序繼續執行。而那個回車也隨之進入了流當中。而遇到第二個scanf()時,scanf()把回車當作是第二次輸入的字元而接收。因此程序也就忽略了輸入而繼續執行了。這個回車就是在做輸入時產生的垃圾字元了。我第一次遇到它時,是我在寫循環時遇雀租到的,由於垃圾字元的原因,使得循環提早結束,而破壞了我預期的流程(第一次見垃圾字元時郁悶死我了)。那怎麼才能防止垃圾字元的破壞,或是避免它頃梁兆的呢?而我的解決方法只有兩種(有其他種的話,一定要告我)。
第一種方法是多定義一個字元變數,如char c;這樣。把變數c分別放到輸入後面。如:
a=getchar();
c=getchar();
……
b=getchar();
c=getchar();
這樣可以使垃圾字元自動進入變數c中,而不破壞我們正確的流程和輸入。如果是scanf()的話,可以按照下面的方式來寫:scanf(」%c%c」,&a,&c);這樣的效果跟使用getchar()是一樣的。
這樣的方法無疑是浪費了一個內存空間,而且增加了很多的冗餘代碼。
第二種方法是使用getche()函數,而不使用scanf()和getchar()。這個函數也是接收字元的,但是它不等待回車的輸入!而直接把字元送入流中,這樣就可以避免垃圾字元的出現了。

這對於高手來說已經是老生常談了,很多高手對這個問題都感到很郁悶(主要我們沒什麼經驗)。嘿嘿~~~!希望高手不要笑我!而且有什麼不對的話,希望高手一定要指出!

㈣ 求教,C語言連續使用兩個scanf的問題

#include<stdio.h>
intmain(){
chara[3],b[4];

printf("請輸入滑差字元串: ");
scanf("%s",a);
scanf("%s",b);
printf("%s ",a);
printf("數搭%s",b);
}

測試可以通過薯讓拿呀。。。

㈤ C語言的,這個程序當中為啥會有兩個scanf函數語句,這兩個scanf函數語句有啥區別

第一個是在do~while中保證輸入的數是大於0的或是等於-1的,否則一直循環要神前纖求輸入正確的數。第二個在while循環中,只要輸入的數不是-1就一直游仿循環要求輸入。從輸入數據的本質講這兩個scanf沒有什麼區別,都是輸入一個整數,只悔搏是對輸入數據的范圍要求不一,寫兩個是便於代碼對輸入數據范圍的處理。

㈥ C語言。為什麼兩個scanf只執行了一個

你輸入時除了數據還會輸入回車,第一個scanf只接收輸入緩沖區中的整毀斗型數,回車還留在輸入緩沖區中。執行第二個scanf時,將從輸入緩沖區鎮手中接收回車。執行第三個scanf時同理。解決纖旅磨辦法:在第二個和第三個scanf語句前加上fflush(stdin)語句。

㈦ c語言連續連個scanf,兩個scanf之間應該輸入什麼

在碧蔽這里真不好說,其實秉承一個原則,就是scanf錄入的時候,最好是中間什麼都不要有,就是這種形式:
scanf("%s%s%s",a,b,c);
這樣子的基本不會錯,再就是你要區別一下scanf和scanf_s,可能兩者的一點區宏燃別會導致一些問題,只蔽慧虛能幫你到這里了,加油