C語言中用scanf函數輸入字符時,為什么要在輸入控...

來源:百度知道    2019/11/13 20:15:29
責任編輯:張小俊
字體:

好心游戲問答中心有網友提出了一個比較有代表性的問題【C語言中用scanf函數輸入字符時,為什么要在輸入控...】,【C語言中用scanf函數輸入字符時,為什么要在輸入控...】具體問題如下:

為什么此時(%c%c中間有空格)在鍵盤輸入字符時中間可加可不加空格,可加多個空格??scanf(“%c %c”,&x,&y);
小編覺得可能對其他網友也有幫助,所以將此問答整理出來了,希望對您有幫助。

小編為您搜羅的答案1

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

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

1.緩沖區

緩沖區是一塊存放臨時輸入數據的內存,我們在鍵盤上輸入數據之所以不會馬上顯示,就是因為數據存放在了緩沖區,在上面例子中,當我們按下回車鍵后,緩沖區的數據會傳送到標準輸入流。

2.標準輸入流

標準輸入流(stdin)是文件指針,scanf()就是從標準輸入流或許數據。 

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

電腦開始執行以下操作:

    開始等待用戶輸入

2.當我們輸入數據,在按下回車鍵前會把數據儲存在緩沖區,按下回車鍵后,會把數據以及換行符( )一起傳送到標準輸入流(stdin)中,

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

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

使用scanf注意事項

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

2.輸入的數據類型一定要和所需要的數據類型一致

3.每次調用完scanf后,記得調用一個getchar()函數

擴展資料

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

2.函數的第一個參數是格式字符串,它指定了輸入的格式,并按照格式說明符解析輸入對應位置的信息并存儲于可變參數列表中對應的指針所指位置。

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

參考資料

網頁鏈接

小編為您搜羅的答案2

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

擴展資料:

scanf()是C語言中的一個輸入函數。與printf函數一樣,都被聲明在頭文件stdio.h里,因此在使用scanf函數時要加上#include <stdio.h>。

在有一些實現中,printf函數與scanf函數在使用時可以不使用預編譯命令#include <stdio.h>。

它是格式輸入函數,即按用戶指定的格式從鍵盤上把數據輸入到指定的變量之中。

參考資料:百度百科:scanf

本回答被網友采納

小編為您搜羅的答案3

加空格屏蔽了空白字符。

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

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

scan:掃描       f :format,格式

1、整數和小數分別使用使用控制符%d %lf 表示(float除外,用%f)。

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

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

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

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

6、在用"%c"輸入時,空格和“轉義字符”均作為有效字符。

擴展資料:

(1)在高版本的 Visual Studio 編譯器中,scanf 被認為是不安全的,被棄用,應當使用scanf_s代替 scanf。

(2) 對于字符串數組或字符串指針變量,由于數組名可以轉換為數組和指針變量名本身就是地址,因此使用scanf()函數時,不需要在它們前面加上"&"操作符。

(3) 可以在格式化字符串中的"%"各格式化規定符之間加入一個整數,表示任何讀操作中的最大位數。

(4) scanf函數中沒有類似printf的精度控制。

如: scanf("%5.2f",&a); 是非法的。不能企圖用此語句輸入小數為2位的實數。

(5) scanf中要求給出變量地址,如給出變量名則會出錯

如 scanf("%d",a);是非法的,應改為scanf("%d",&a);才是合法的。

參考資料:百度百科——scanf

本回答被網友采納

小編為您搜羅的答案4

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

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

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

注意事項:

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


擴展資料:

scanf

C語言中常用的標準輸入輸出函數,它的常規用法是scanf(“輸入格式”,輸入地址),scanf從輸入緩沖區取入數據按照指定的“輸入格式”存儲到指定的“輸入地址”。

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

參考資料:百度百科C語言

本回答被網友采納

小編為您搜羅的答案5

這絕對不是為了美觀,1樓不要誤人子弟。
空格確實不是必須的,但有了空格就可以忽略你輸入的空格,懂我的意思嗎?
比如scanf(" %c" ,&c);
你輸入了' a'(a前面有個空格),a就能被c接受。但控制符前如果沒空格,那c就接受了空格,明白了沒?這個可以防止誤操作,忽略空格輸入,接受第一個非空格輸入! 本回答被提問者和網友采納 請注意:本文為編輯制作專題提供的資訊,頁面顯示的時間僅為生成靜態頁面時間而非具體內容事件發生的時間,由此給您帶來的不便敬請諒解!

www.agwlun.tw true http://getqq.haoxyx.com/g/3407/34078270.html report 5439 好心游戲問答中心有網友提出了一個比較有代表性的問題【C語言中用scanf函數輸入字符時,為什么要在輸入控...】,【C語言中用scanf函數輸入字符時,為什么要在輸入控...】具體問題如下:為什么此時(%c%c中間有空格)在鍵盤輸入字符時中間可加可不加空格,可加多個空格??scanf(“%c%c”,&x,&y);小編覺得可能對其他網友也有幫助,所以將此問答整理出來了,希望對您有幫助。小編為您搜羅的答案1%c前面的空格就是用來屏蔽空白符的,首先必須要知道C語言scanf() 函數的特
最近關注
首頁推薦
熱門圖片
最新添加資訊
24小時熱門資訊
精彩資訊
精彩推薦
熱點推薦
真視界
精彩圖片
社區精粹
關于本站 | 廣告服務 | 手機版 | 商務合作 | 免責申明 | 招聘信息 | 聯系我們
Copyright © 2004-2017 haoxyx.com All Rights Reserved. 好心游戲網 版權所有
京ICP備10044368號-1 京公網安備11010802011102號
500w篮球比分