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

時間 2021-09-11 22:33:34

1樓:鮮雁員環

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

例如:scanf("

%c",&c),你輸入了'

a'(a前面有個空格),a就能被c接受。

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

注意事項:

對於scanf()而言,%c是個較為特殊的說明符。

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

擴充套件資料:

scanf

c語言中常用的標準輸入輸出函式,它的常規用法是scanf(「輸入格式」,輸入地址),scanf從輸入緩衝區取入資料按照指定的「輸入格式」儲存到指定的「輸入地址」。

但是有一類問題通常令人頭疼,那就是字串的讀入,此處僅僅討論使用scanf讀取字串的一些問題。理論上你只需要定義一個字元指標,然後scanf每次讀入字元儲存到該指標所指的儲存空間,之後指標值自動加1。

參考資料:搜狗百科c語言

2樓:越廣英鄒月

空格不是必須的,scanf("%c

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

3樓:毛來福養雲

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

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

比如scanf("

%c",&c);

你輸入了'

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

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

4樓:愛佳佳的恐龍

如果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就接受了空格,明白了沒?這個可以防止誤操作,忽略空格輸入,接受第一個非空格輸入。

5樓:黑白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"輸入時,空格和「轉義字元」均作為有效字元。

6樓:匿名使用者

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

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

參考資料

網頁連結

7樓:西西哩的小馬甲

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

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

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

注意事項:

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

8樓:圈圈叉叉叉叉圈

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

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

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

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

9樓:夏天很冷

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

10樓:湮魂

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

11樓:我要度百

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

c語言scanf無法輸入值,關於C語言中用scanf函式如何輸入資料的問題

樂跑小子 scanf 是c語言標準庫中的輸入函式,宣告包含在stdio.h檔案中,因此要使用該函式,必須載入 include標頭檔案。當執行到scanf函式時,程式就暫停等待使用者輸入,該函式只接受變數的地址,格式為 變數名。是一個阻塞式的函式,等使用者輸入完畢後,則將值賦值給變數,至此函式呼叫完畢...

關於C語言中scanf和printf函式

輸入結果要看你 定義的變數 year 和 code 的 型別,決定,1,int year char code scanf d c year,code printf d c year,code 列印結果 1998和逗號 c 只能接受耽擱字元你輸入的是1998,r 所以 code 裡面鋤從了逗號 而沒有...

c語言中gets函式和是scanf函式有什麼區別呢

一 指代不同 1 scanf 是c語言中的一個輸入函式。2 gets 從標準輸入裝置讀字串函式。二 讀取方式不同 1 scanf 是格式輸入函式,即按使用者指定的格式從鍵盤上把資料輸入到指定的變數之中。2 gets 可以無限讀取,不會判斷上限,以回車結束讀取,所以程式設計師應該確保buffer的空間...