c語言scanf輸入時為什麼不能用逗號隔開

2021-09-11 19:13:23 字數 5886 閱讀 1729

1樓:假面

c語言scanf輸入時能用逗號隔開,但是輸入資料的時候一定也要加上逗號。用scanf()讀取資料時,輸入的格式必須和scanf()的格式控制字串對應。

對於標準輸入函式scanf來說,括號內的格式字串,也就是由" "中的部分,除了%引導的格式字元之外,所有的其他字元必須在輸入資料時原樣原位置輸入。例如:

scaf("%d,%d",&a,&b);

兩個%d之間的逗號就是普通字元,它必須在你輸入a和b的值的時候,也輸入到ab之間。輸入如下:

5,6如果不輸入逗號,或者輸入空格,輸入均不會正確。

2樓:自由的風的我

你用逗號隔開後,從鍵盤輸入的時候也必須輸入逗號,會造成使用者的不方便

3樓:polaris北斗

怎麼不能呢?能的,這取決於你的輸入格式

如果是這樣:

scanf("%d %d %d",&a,&b,&c);

輸入時應當用空格隔開

如果是這樣:

scanf("%d,%d,%d",&a,&b,&c);

輸入時應當用逗號隔開

4樓:

我也在學習,練習習題過程中有一種情況是不能用逗號,空格等等的,就是涉及到%c的情況,因為逗號,空格等都會被認為是字元。

eg.scanf("%d%c%d",a,b,c);

如果你輸入了1 2 3(1空格2空格3),那麼第一個空格就被當作字元了。

5樓:匿名使用者

可以用逗號或者其他符號隔開的,其實:

scanf("%d %d",&a,&b);

這中間是用空格格開,也可以用 ,/ 等等,都可以隔開,比如:

scanf("%d,%d");

那麼你在輸入的時候,你要跟上面的格式一樣:

17,18

這樣就可以了。

6樓:蕭竣閏

可以逗號隔開,輸入的時候同樣要逗號隔開就行

7樓:啊啊啊的帝國號

標準c裡面面,scanf()函式是格式化輸入函式,他的特點就是原樣輸入,

比如說int a;

scanf("a%d",&a);

那就得你先輸入了一個a之後,才會把接受到的數給a比如你從鍵盤輸入了123aaa321aa,然後回車那前面的123aa編譯器是不會管的,接受到a之後,才會把a後面的整數賦值給a

至於再之後的內容,就會等下次輸入再處理,

因為這一個scanf接收一個a和一個整數,已經執行完畢了

8樓:匿名使用者

逗號可以用,但是輸入規則要嚴格按照scanf設定的規則來,具體比較複雜,我直接轉網上的回答給你看吧

9樓:匿名使用者

可以的啊怎麼不可以,你把**給我看看

c語言scanf輸入時可以加逗號的嗎?

10樓:你不愛吃烤肉

可以,但是輸入資料的時候一定也要加上逗號。

用scanf()讀取資料時,輸入的格式必須和scanf()的格式控制字串對應,比如說:

1、scanf("%d,%d",&a,&b);因為兩個%d之間有一個逗號,所以在輸入時兩個整數之間只能用逗號分隔,如果用其它符號分隔就會出錯(比如說此時用空格、回車分隔就會出錯)

2、scanf("%d%d",&a,&b);這個格式控制字串就可以用空白分隔(空格,回車都可以)

擴充套件資料:

c語言逗號運算子:

逗號運算子是所有運算子中級別最低的,遇到逗號運算子表示運算結束;

int i=0;

int j=(i++,i++,i++);

遇;才算結束

i=0;

int k=(i++)+(i++)+(i++);

int a=10;

int b;

int num = (a = 19, b = 10, a + 1);

c語言逗號表示式:

這種型別的運算子成為逗號表示式,又稱為「順序求值運算子」。

int a=10;

a = 3 * 5, a * 4;

printf("%d\n", a);//15;把a = 3 * 5作為一個整體,是一個賦值語句;後面a * 4是另外一個語句;

a=10;

printf("%d\n", (a = 3 * 5, a * 4));//60;括號內是一個整體,它的值是最後一個表示式的值,先執行得出a=15,後運算15*4=60;

a=10;

printf("%d\n", a = 3 * 5, a * 4);//15;這裡的逗號是作為引數的分隔作用,a=15,後面的a * 4沒有列印;

a=10;

printf("%d,%d\n", a = 3 * 5, a * 4);//15,40;

11樓:也不予u與

兄弟們,我終於發現了。

無論課本還是老師講課,都說可以加逗號,只要注意前後格式一致就好。例如scanf("%d,%d",&a,&b);

在程式中也寫 1,2,3

即便這樣 也還是出錯

是因為 即使在你寫程式時,逗號都是用英文的。

但是!在你自己寫的程式裡鍵入時,不知為啥自動變為中文,所以注意用英語逗號就好了。

12樓:匿名使用者

能加,但是像上面的,執行輸入兩個整數時,也要加逗號

13樓:導一導函式

逗號輸入時可能須要中文格式的逗號才能行

14樓:匿名使用者

可以加,但是最好還是不加吧!!!如果是競賽的話,規則基本上都是不加,

c語言中用scanf函式輸入字元時,為什麼要在輸入控制符%c前面加空格?用scanf還有哪些要注意?

15樓:愛佳佳的恐龍

如果scanf中%d是連著寫的如「%d%d%d」,在輸入資料時,資料之間不可以用逗號分隔,只能用空白字元(空格或tab鍵或者回車鍵)分隔。

「2 (空格)3(tab) 4」 或 「2(tab)3(回車)4」等。若是「%d,%d,%d」,則在輸入資料時需要加「,」,如「2,3,4」。

比如scanf(" %c" ,&c);

你輸入了' a'(a前面有個空格),a就能被c接受。但控制符前如果沒空格,那c就接受了空格,明白了沒?這個可以防止誤操作,忽略空格輸入,接受第一個非空格輸入。

16樓:黑白say晚安

加空格遮蔽了空白字元。

%c前沒空格,scanf()將讀取標準輸入流中的第一個字元,%c前有空格,scanf()則讀取標準輸入流中第一個非空白字元。

使用scanf函式時應該注意的問題:

scan:掃描       f :format,格式1、整數和小數分別使用使用控制符%d %lf 表示(float除外,用%f)。

2、引數前面使用&符號,&號前要空格。

3、scanf輸入語句中替換符後不能加空格,也不能加\n。

4、scanf()中的變數必須使用地址。

5、scanf()的格式控制串可以使用空白字元或其它非空白字元,使用空白字元會使scanf()函式在讀操作中略去輸入中的一個或多個空白字元。使用非空白字元會使scanf()函式在讀入時剔除掉與這個非空白字元相同的字元。

6、在用"%c"輸入時,空格和「轉義字元」均作為有效字元。

17樓:匿名使用者

%c前面的空格就是用來遮蔽空白符的,

首先必須要知道c語言 scanf() 函式的特性,以及scanf()與緩衝區、標準輸入流之間的聯絡。在此之前,先介紹兩個專業術語。

1.緩衝區

緩衝區是一塊存放臨時輸入資料的記憶體,我們在鍵盤上輸入資料之所以不會馬上顯示,就是因為資料存放在了緩衝區,在上面例子中,當我們按下回車鍵後,緩衝區的資料會傳送到標準輸入流。

2.標準輸入流

標準輸入流(stdin)是檔案指標,scanf()就是從標準輸入流或許資料。

以上面**為例,當執行到scanf()時,

電腦開始執行以下操作:

開始等待使用者輸入

2.當我們輸入資料,在按下回車鍵前會把資料儲存在緩衝區,按下回車鍵後,會把資料以及換行符(\n)一起傳送到標準輸入流(stdin)中,

scanf()就是從標準輸入流中或許資料,上面第一個scanf()要讀入一個整數,它從標準輸入流中查詢,跳過空白符(空格、換行符、製表符)

3.如果遇到數字,則開始讀入,直到遇到非數字的字元結束,最後計算讀取到的數值,儲存到相關變數中。

使用scanf注意事項

1.引數的個數一定要對應

2.輸入的資料型別一定要和所需要的資料型別一致

3.每次呼叫完scanf後,記得呼叫一個getchar()函式

擴充套件資料

1.函式 scanf() 是從標準輸入流stdio (標準輸入裝置,一般指向鍵盤)中讀內容的通用子程式,可以說明的格式讀入多個字元,並儲存在對應地址的變數中。

2.函式的第一個引數是格式字串,它指定了輸入的格式,並按照格式說明符解析輸入對應位置的資訊並儲存於可變引數列表中對應的指標所指位置。

每一個指標要求非空,並且與字串中的格式符一一順次對應。

參考資料

網頁連結

18樓:西西哩的小馬甲

空格確實不是必須的,但有了空格就可以忽略你輸入的空格。

例如:scanf(" %c" ,&c),你輸入了' a'(a前面有個空格),a就能被c接受。

但控制符前如果沒空格,那c就接受了空格,這個可以防止誤操作,忽略空格輸入,接受第一個非空格輸入。

注意事項:

對於scanf()而言,%c是個較為特殊的說明符。 %c前沒空格,scanf()將讀取標準輸入流中的第一個字元,%c前有空格,scanf()則讀取標準輸入流中第一個非空白字元,遮蔽了空白字元。

19樓:圈圈叉叉叉叉圈

這絕對不是為了美觀,1樓不要誤人子弟。

空格確實不是必須的,但有了空格就可以忽略你輸入的空格,懂我的意思嗎?

比如scanf(" %c" ,&c);

你輸入了' a'(a前面有個空格),a就能被c接受。但控制符前如果沒空格,那c就接受了空格,明白了沒?這個可以防止誤操作,忽略空格輸入,接受第一個非空格輸入!

20樓:夏天很冷

空格不是必須的,scanf("%c %c",a,b)只是提示在輸入時兩個字元必須有空格間開。如果是scanf("%c%c",a,b)那沒兩個輸入字元不要有空格,不過程式設計時最好加上空格,這算一個書寫規範吧,要不然如果你scanf("%s%s",a,b)系統可能區分不了你的字串何時結束。

21樓:湮魂

不是必須加空格,這並不能防止誤輸入的,這種**寫出來,用的人肯定只能是熟知**如何編寫的人,有無空格分隔使用者會根據其格式使用,個人感覺就是為了能讓別人看清楚

22樓:我要度百

空格不是必須的吧,我們是感覺看起來美觀一些而加入的呀

c語言中,如果用scanf輸入多個數字,每個數字之間在輸入的時候能用逗號隔開嗎?

23樓:濮方雅

scanf("%d,%d",&a,&b); //這種輸入的時候逗號隔開

scanf("%d%d",&a,&b); //這種輸入的時候不需要逗號隔開,空格或tab或回車隔開就行

c語言輸入時d啥意思, d在c語言裡是什麼意思

d是代表十進位制數的意思,d 在c語言裡沒見過。跳過一些數字不儲存 如 scanf s d s a,b 從鍵盤輸入裝置中 讀取兩個字串,跳過第一個串和第二個串的數字部分 d指跳過某個輸入的內容 使下一個輸入的內容複製給緊接著的變數比如 下面程式 輸入 1 2 3 則輸出為 1 3 程式把2跳過了,直...

c語言中scanf裡面要求輸入的變數也要初始化嗎

int scanf const char format,scanf 函式是格式化輸入函式,它從標準輸入裝置 鍵盤 讀取輸入的資訊。其呼叫格式為 scanf 格式化字串 地址表 函式 scanf 是從標準輸入流 stdio 中讀內容的通用子程式,可以讀入全部固有型別的資料並自動轉換成機內形式。你的下面...

c語言中用scanf函式輸入字串後用strcmp函式比較

那個抄,字串是襲 有結尾符的啊 bai。長du度應該 zhi宣告為3.int main 字元陣列不能用這bai樣du 的方式賦值,b ab 並且字元數zhi組的長dao度版要比,實際長度 1,因為系統會在數權組內部自動加一個 0 作為字串的結束標誌,它佔一個空間,你如進行賦值的話用 可以用gets和...