scanf什麼時候空格可以被讀?

2025-07-14 01:10:14 字數 4198 閱讀 8902

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中 和空格...