用scanf輸入字串空格不識別??

2025-07-07 23:05:12 字數 4650 閱讀 2599

1樓:yty隨意

1、首先格式控制字串用於指定輸入資料的格式,一般由格式字串組成,如下圖所示。

2、格式字串以%開頭,在%後是各種格式的格式符,用來說明輸入資料的型別、形式、長度、小數位數。

3、位址列表中給出各變數的位址,用來輸入變數值。

4、函式中的位址,由位址運算子「&」和變數名組成。

5、程式中的&n,表示變數n的位址。

6、scanf函式本質上是給變數賦值,它要求使用變數的位址,如下圖所示就完成了。

2樓:希聲和寡

用scanf不是不顯示空格,而是用scanf接收字串的話,在串首遇到空格的話,跳過,繼續尋找下乙個非空格字元,在串中遇到空格時,結束字串的輸入。

所以如果使用者輸入" abcd efg"的話,scanf取得的字串為"abcd"。

而gets取得字串時,是在遇到eof(串尾)時停止,所以不存在這個問題。

c語言用如何用scanf輸入帶有空格的字串

3樓:網友

c語言中scanf()函式提供的「%[格式串可以用來進行多個字元的輸入,並對結束符進行自定義。 對於%還可以用^+任意字元(包括 eof)來結束字串的輸入,如%[^eof]就是直到有eof 輸入,字串才中止。

void main()

4樓:香夢沉酣

你可以採用gets();函式輸入,空格也算在內的。輸入對應的是puts();要使用這個函式標頭檔案裡面只需新增#include .如果對你有用,望。

5樓:love永遠一號

你就用gets(字串陣列名),別忘了#include

6樓:細雨在微笑

換個方法,不要吊死在一顆(函)樹啊!

7樓:網友

這也有如何用s輸入帶入空格的字串,這個問題很很。很專業。

8樓:初巨集義

你可以在上直接輸入c語言,就有相應的答案。

c語言輸入一箇中間代有空格的字串,為什麼不可以用scanf? 急急急

9樓:網友

預設是以空白符作為結束標記的,如果要用scanf讀取帶空格的字串,可以這樣。

以換行符作為結束標記,從而讀取帶空格的字串。

#include

int main()

10樓:網友

scanf的話讀到空格那麼這個字串就結束了。如果你想讀進帶空格的字串就用gets();

11樓:網友

因為c語言的字串是以'\0'作為結束符為標記的,所以當有空格的時候,scanf就會忽略後面的字串的。

12樓:姬梓瑤兆涵

有了char

a[10];,那麼a就是這個陣列的第乙個元素的指標,&a就是這個陣列的指標;因為一維陣列的第乙個元素的指標和這個陣列的指標是同乙個位址,區別是a+1指向a[1],而&a+1就指向a[10]了(這裡已越界了)。但&a和a的"值"是相同的,只是型別不同。c呼叫函式時,實參的型別都會被強制為形參的型別,scanf("%s",a)或scanf("%s",a)中要求引數是char

型指標,那麼&a儘管是char

型別,但被強行轉換為char

型了……

13樓:網友

用scanf時,它是以空格來標識輸入字串的結束。

14樓:網友

空格會被解釋為結束符。

c語言中怎樣用scanf()讀入帶空格的字串

15樓:polaris北斗

scanf遇到空格就會結束,所以讀不到帶空格的字串。

使用gets()可以解決,gets會把空格讀進來,遇到回車符才會結束。

16樓:雷鵬

現在gcc中gets()不讓用了,可以使用char str[100];

fgets(str,100,stdin);//stdin鍵盤輸入fputs(str,stdout);//輸出或者:char str[100];

scanf("%[^n]",str);//遇到換行符停止printf("%s",str);輸出。

17樓:心雪之靈

這個部落格裡有關於scanf的用途詳解。

scanf讀取字串時為何把空格讀進去了?

18樓:聽不清啊

這是因為%s、%d都會忽略開頭遇到的空格,遇到空格則結束讀入;而%c則把空格也當作是乙個有效字元讀取了。

如果用scanf來接收字串的話,字串中不能含有空格,否則將以空格作為串的結束符,是不是說空格就

19樓:望_稻草人

\0'和空格不是同乙個概念。

0'表示字串。

結束符,代表字串結束,而空格是乙個普通字元,顯示在文字中可以選中。

0'的ascii碼為0,空格的ascii碼為32,兩個不是同乙個字元。

在電腦程式。

中通常使用'\0'表示字串結束,空格為文字字元,2.

還有,如果想取一行字元(包含空格等)用scanf是可以的,但"%s"是不行的,因為%s遇到空白字元(空格、製表符。

就結束了,所以可以寫成 "%[^n]%*c",%[n]的作用剛才講過了,就是讀之外的所有字元,也就是說讀到為止,%*c的作用就是把去掉,否則再次讀的時候一直遇到的都是;。

這樣想讀入一行字串直接用scanf("%[^n]%*c",str);就可以了。或者用gets(),但不推薦這個。

20樓:網友

scanf ()如果使用%s說明符,空白字元之外的所有字元都是可接受的,所以scanf ()跳過空白字元知道遇到第乙個非空白字元,然後儲存再次遇到空白字元之前的所有非空白字元,這就意味著%s使scanf ()讀取乙個單詞……

-摘自《c primer plus》第五版中文版scanf語法定義上就是這樣,空格和\0不一樣,查下ascii碼錶就知道了。

如果想獲取包含空格的字串,可以用gets。

scanf用%c的時候可以識別空格嗎?

21樓:四舍**入

%c前面的空格就是用來遮蔽空白符的。

scanf()讀入字串中的空格)

#include

int main()

char a[777];

scanf("%[^/n]",&a);

printf("%s",a);

return 0;

22樓:北大青鳥東莞金碼學校

控制符不同 你用%c說明是輸入乙個字元 此時可以scanf可以接受空格 但其他控制符都以空格為結束標誌 如%d %s都是以空格為結束 所以你的二個不接受空格。

23樓:超人影視娛樂

題描述一:(scanf()讀入字串中的空格) 。

#include

int main()

說明:在scanf函式中,可以使用 %c來讀取乙個字元,使用 %s 讀取乙個字串,但。

是讀取字串時不忽略空格,讀字串時忽略開始的空格,並且讀到空格為止,因此只能讀取乙個單詞,而不是整行字串,因此一般使用fgets來讀取乙個字串。其實scanf函式也可完成這樣的功能,而且還更強大。這裡主要介紹乙個引數,%[這個引數的意義是讀入乙個字符集合。

是個集合的標誌,因此%[ 特指讀入此集合所限定的那些字元, 比如 %[a-z] 是輸入大寫字母,一旦遇到不在此集合的字元便停止。如果集合的第乙個字元是" ^ ", 這說明讀取不在" ^ " 後面集合的字元,既遇到" ^ " 後面集合的字元便停止。注意此時讀入的字串是可以含有空格的。

通俗易懂叫高質量?程式題要簡單明瞭?

24樓:陳

這根後面要輸入的變數的資料型別有關,%d是乙個整型變數的格式控制,不接字元型資料,%c是字元型變數格式控制,空格字元。

25樓:小唐文件屋

可以的,不過輸入串(%s)時不接受空格。要輸入串時可用gets()函式。

26樓:旁笑槐

%c接受空格的,其他的包括%s都是以空格作為分割符。

c語言中如何用scanf讀取乙個帶有空格的string

27樓:網友

scanf預設回車和空格是輸入不同組之間的間隔和結束符號,所以輸入帶空格的字串是不可以的,建議用gets來完成這個功能,gets是以回車作為結束的:

char str[40]; gets(str);

28樓:無奈去遊戲

字串本來就不是專職用來讀取字串的,建議你需要讀取帶字串的資料,可以用 頭的。

使用char * gets(char *)讀入 使用 char *puts(char *)輸出。

較為安全的可以使用:

使用char * fgets(char *,int,stdin)讀入 使用 char * fputs(char *,int,stdout) 輸出。

scanf()就是到空格停止讀取但是不丟棄資料。

輸入字串abcdabfabc再輸入字串ab最後輸入字串99要輸出結果為abcdabf99c

1全部 輸入字串abcdabfabc 再輸入字串ab 最後輸入字串99 要輸出結果為abcdabf99c include include include void function char s,char t1,char t2,char w else break if r 0 a w w r t2 ...

用c 解 輸入字串,按照升序輸出。要求字串必須

要求差不多,字串及個數可以自己輸入。版 include using namespace std void main int i,j char pt for i 0 i 4 i for j i 1 j 5 j if strcmp p i p j 0 cout after sorting 輸出排序後的結...

任意輸入字元組成字串,對該字串中的字元按ASCII碼值升序排列後輸出,程式設計實現此功能

在手機知道中已有 知道君 正確的回答,電腦中為何看不見呢 public class form1 不限制輸入的字元個數 private sub button1 click byval sender as system.object,byval e as system.eventargs handles...