為什麼scanf不能存空格?

時間 2025-04-20 02:40:57

1樓:匿名使用者

我來說下標準答案吧。

首先你寫的不規範,正確應該是這樣。

char str[100];

char chr;

scanf("%s%c", str,&chr);

可能你只是覺得表達清楚意思就行了。

然後再說為什麼會向你說的這樣。

你輸入乙個字串賦值給str,然後按回車或者空格來結束,以輸入下乙個字元賦值給chr,你知道不,你按空格或者回車也是字元啊,所以它就把你輸入的空格或者回車賦給了chr字元了。

空格的ascii碼是32,回車好像是13或者20。

明白了不?如果你中間加乙個空格,輸入完第一字串後,按空格,他會按格式賦值,因為scanf("%s %c");中間有乙個空格,會吸收這個空格,因此會在你輸入空格後的下乙個字元賦給字元chr。

scanf("%d%f%d%")

像這樣的中間的空格或者回車不會被下乙個變數吸收,具體你可以看書上的定義。

scanf("%c%c")這樣的,你輸入ab,然後他把a賦給第乙個,a賦給第二個,沒問題。

但是你輸入a後,再空格或者回車,他就會把空格或者回車賦給第二個字元。

另外,團idc網上有許多產品**,便宜有口碑。

2樓:網友

scanf("%s",&a[0]);

這個函式本來就是過濾掉空格的。

scanf過濾空格,方便輸入多組資料。不用回車。

例子:如果。

scanf("%s%d",&a[0],&b);

就不用回車了。

你想用的是字元陣列就用指標把。

char *a[10];

scanf("%s",a);

printf("%s",a);

3樓:網友

你可以把scanf改成下面。

注意z後面有空格,還有%後面是9,小於10,是為了防止溢位。

4樓:匿名使用者

在這個函式里空格是輸入字串分隔符之一。

用gets之類的試試吧。

c++中scanf可以有空格嗎,為什麼?

5樓:旅遊達人在此

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

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

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

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

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

c語言scanf為什麼要用取地址符

因為scanf要往你的變數裡寫入數值,所以他必須知道那個變數的地址,至於變數裡存的是什麼值,他是不管的,反正他寫入之後就被覆蓋成新的值了 對比printf,他是要輸出變數裡的數值,他只管要那個值,至於地址在哪,他也無所謂 這就是寫和讀的本質性區別,寫只要地址,讀只要值 變數其實同時有地址和值兩個東西...

鍵盤空格鍵突然不能用了,為什麼我的鍵盤的空格鍵按了沒反應?

江西新華電腦學院 1 空格鍵失靈一般不是電路問題,而是鍵帽下的金屬條沒有卡到正確的位置導致的,我們只要拆下空格鍵,將金屬條的位置重新調節下即可 2 鍵盤上有幾個鍵拆了比較難裝,分別是空格 回車 shift。由於這三個鍵比較大比較長,裡面通常加裝了金屬條。在鍵盤的按鍵裡安裝金屬條的作用是為了讓使用者無...

為什麼在使用scanf 函式讀取十六進位制數時,不要輸入ox字首?有什麼影響嗎

0x之類的字首不只是給人看的,另一個作用是告訴編譯器這是什麼進位制的數,因為十進位制的123和十六進位制的123 用十進位制表示就是291 看起來是一模一樣的,但是由於scanf 函式已經知道了輸入的是十六進位制數,就不用再告訴它一遍了 我認為字首只是給人看的,方便閱讀者識別資料而機器中儲存的資料,...