1樓:網友
因為空格也屬於乙個字元,而%c是字元型。
2樓:網友
除了%c以外的說明符會自動跳過輸入項之前的空格,所以scanf(「%d%d」, n, &m) 與scanf(「%d %d」, n, &m) 的行為是相同的。
然而現在存在%c,則%d%c%d%c首先從io stdin緩衝區讀取4個位元組到a
接下來由於%c不會跳過任何字元。所以讀乙個' '到b由於接下來stdin緩衝區的內容是b,而scanf嘗試從緩衝區讀入乙個整數,則scanf永遠不會跳過這個字元b,且ansi c要求scanf函式在第乙個讀緩衝區錯誤的地方跳出,所以變數c、d被跳過。
包括%s格式化也不能跳過空格。
3樓:青澀草
空格是字元char。 輸入格式控制沒啥具體意義。
scanf讀取字串時為何把空格讀進去了?
4樓:聽不清啊
這是因為%s、%d都會忽略開頭遇到的空格,遇到空格則結束讀入;而%c則把空格也當作是乙個有效字元讀取了。
c語言裡可以只用scanf讀入空格嗎?
5樓:網友
可以。不用系統提供的函式庫,自己編乙個代替。
6樓:
用 gets() 就行了,scanf() 有些地方實在是。
scanf用%c的時候可以識別空格嗎?
7樓:四舍**入
%c前面的空格就是用來遮蔽空白符的。
scanf()讀入字串中的空格)
#include
int main()
char a[777];
scanf("%[^/n]",&a);
printf("%s",a);
return 0;
8樓:北大青鳥東莞金碼學校
控制符不同 你用%c說明是輸入乙個字元 此時可以scanf可以接受空格 但其他控制符都以空格為結束標誌 如%d %s都是以空格為結束 所以你的二個不接受空格。
9樓:超人影視娛樂
題描述一:(scanf()讀入字串中的空格) 。
#include
int main()
說明:在scanf函式中,可以使用 %c來讀取乙個字元,使用 %s 讀取乙個字串,但。
是讀取字串時不忽略空格,讀字串時忽略開始的空格,並且讀到空格為止,因此只能讀取乙個單詞,而不是整行字串,因此一般使用fgets來讀取乙個字串。其實scanf函式也可完成這樣的功能,而且還更強大。這裡主要介紹乙個引數,%[這個引數的意義是讀入乙個字符集合。
是個集合的標誌,因此%[ 特指讀入此集合所限定的那些字元, 比如 %[a-z] 是輸入大寫字母,一旦遇到不在此集合的字元便停止。如果集合的第乙個字元是" ^ ", 這說明讀取不在" ^ " 後面集合的字元,既遇到" ^ " 後面集合的字元便停止。注意此時讀入的字串是可以含有空格的。
通俗易懂叫高質量?程式題要簡單明瞭?
10樓:陳
這根後面要輸入的變數的資料型別有關,%d是乙個整型變數的格式控制,不接字元型資料,%c是字元型變數格式控制,空格字元。
11樓:小唐文件屋
可以的,不過輸入串(%s)時不接受空格。要輸入串時可用gets()函式。
12樓:旁笑槐
%c接受空格的,其他的包括%s都是以空格作為分割符。
c語言中scanf()與gets()函式的區別,哪乙個可以讀入空格啊?
13樓:網友
不能接受空格、製表符tab、回車等;對末尾回車符的處理:把回車符保留在快取中。
gets能夠接受空格、製表符tab和回車等;對末尾回車符的處理:接收回車,但把回車替換為\0。
當遇到回車,空格和tab鍵會自動在字串後面新增'\0',但是回車,空格和tab鍵仍會留在輸入的緩衝區中。
gets:可接受回車鍵之前輸入的所有字元,並用''替代 '\0'.回車鍵不會留在輸入緩衝區中。
從標準輸入裝置讀字串函式,其可以無限讀取,不會判斷上限,以回車結束讀取,所以程式設計師應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢位。scanf()可以讀取所有型別的變數。
14樓:天雲小店
scanf( )函式和gets( )函式都可用於輸入字串,但在功能上有區別。
gets可以接收空格。
scanf遇到空格、回車和tab鍵都會認為輸入結束,所有它不能接收空格。
例1:#include
main()
依次鍵入asd空格fg回車,asd空格fg回車,則ch1="asd\0",ch2="asd fg\0"。
例2:#include
main()
依次鍵入asdfg回車,asdfg回車,則ch1="asdfg\0",c1='',ch2="asdfg\0",c2需輸入。
15樓:網友
scanf()是不可以讀入空格的,他是以空格,tab,和回車為結束符的,而gets是不以空格為結束符的,他可以讀入空格的,他只以回車和tab鍵為結束符。
16樓:鈺氏幽默
gets()可以讀入空格,讀取乙個字串…令乙個遇到空格就讀去結束…
scanf會讀取換行符和空格嗎?還是讀取換行符和空格後將它們丟棄?
17樓:風若遠去何人留
這個是分情況的。
有乙個特殊的格式 %c
當%c格式的時候,會讀取任何字元,包括換行和空格。
當其他格式的時候(不包括正規表示式), 如果空格或者換行出現在前面,會被讀取並拋棄。
在後面的時候,不會讀取,而只是檢測。
比如 緩衝中是 空格123空格。
以%d讀取, 那麼第乙個空格會被拋棄。讀入123三個數值,發現下乙個是空格,那麼停止。
但是這個結尾的空格 還在緩衝區裡面。
正規表示式的時候,看正則寫法,決定是否拋棄。
18樓:陽光上的橋
如果是%d、%f讀入數值型別,會自動跳過多餘的空格和換行,如果是%s遇到空格和換行會停止,如果是%c就可以讀入空格和換行。
如何讀入帶空格的句子?scanf
19樓:大神
scanf遇到以下情況結束讀入。
chars 空格,回車,製表符。
2.到達%m[d/f/c/s/e/u]指定的寬度m3.出現非法字元,對於%d來說,非digit就是非法字元,如: 'a '
要使字串讀入white chars,c中使用gets,gets是專門處理字串讀入的函式,沒有跳white chars的限制;c++中使用或者 或者用 scanf("%[^n]",s);讀入句子到s中,這個格式化……哎 都忘了,罪過 罪過啊。
c語言問題,關於scanf的,空格問題
20樓:網友
scanf("%c",&answer) 與 scanf(" c",&answer),後者只是在%前多了個空格,似乎沒有什麼區別,但使用起來區別是很大的。
scanf()作單字元輸入時規定只接收乙個字元,但它卻把回車符也作為字元對待的。這就造成程式中只有乙個輸入字元的scanf()語句時,問題還不大,但如果後面還跟著第二個scanf()字元輸入語句,這個scanf()就把前面輸入的回車符當作輸入字元了。這就在輸入邏輯上造成了混亂,達不到人們預期的願望。
有了這個空格,這個空格就相當於要求輸入乙個空格,剛好把剛才的''接收掉。之所以' '能接收'',是因為"%c...中的空格是廣義的,對『'、't'都有效。
而且實踐證明,這個空格放在%c後面也不能達到目的。應當說,這也是比較巧妙的應用!
21樓:網友
除了三樓說的,建議樓主以後乙個scanf就針對乙個變數。否則兩個變數之間用空格或者逗號隔開,輸入的時候也需要輸入空格或逗號。同時在輸入char型時注意,之前最後一次使用scanf或printf的時候,如果你使用了回車作為。
22樓:育知同創教育
scanf("%d",&c)中不應該出現在""中,scanf的""裡只放格式字串(帶%,如%d),其餘的字元需要原樣輸出。
日語中的什麼時候讀wo什麼時候讀o
恩,一樣 一般唱歌的時候為了好聽,唱wo的 和su一樣,講話一般用si,歌詞裡會說成su 任何時候都讀 o 啊 只不過打字的時候和 要區分,所以羅馬拼音是 wo 平時讀 o 就可以了 沒區別 的羅馬音是 wo 但在實際上讀的時候和 是一樣的,讀 o 輸入電腦時要用羅馬音輸入 wo 發音時絕對讀 o ...
日語中漢字什麼時候讀i,什麼時候讀yu
和 意義是一樣的,只不過口語體 文章體 不明白請追問 口語表達時,讀 yi 行 yi ku 意思是去 到 在文章中表達時,或者文縐縐一點,行 行 yu ku 意思同上 訓讀時,有 一行目 ichi gyou me 讀 gyou 意思為第一行 或者銀行 gin kou 讀 kou意思是銀行 額。選了個...
html裡的空格什麼時候需要用nbsp代替
如果你要在一個輸入框或者文字框的前後加空格,就要用 代替 因為標籤裡 的內容是直接顯示在頁面上的,所以不需要。半形空格用 代替,全形的空格可以直接在網頁裡生效。打全形空格的兩種方法 1 智慧abc按v1,選擇第一個 2 按shift 空格切換輸入法的 半 全形 狀態為全形再按空格 html中 和空格...