求解c語言中空格在輸入時的作用,求解C語言中,空格在輸入時的作用?。。。

2021-12-19 13:45:21 字數 5453 閱讀 8322

1樓:岔路程式緣

在scanf()語句中,空格有特殊作用:

一般在編寫程式時,不提倡寫入空格,因為可能會出現難以預知的變化。因為它規定:

(1)當輸入的是數字時,比如scanf("%d",a);這時你輸入空格是當作沒有輸入的,如輸入「(空格)(空格)(空格)(回車)「,程式還在那裡等著呢!可是如果你如果輸入」(空格)(空格)123(空格)(回車)「則程式把123賦值給了a,執行的是a=123——直接把空格給忽視啦!!。

所以,這時的空格基本上是等於白按。

(2)如果你在%d前面加上一個空格,如scanf("(空格)%d",a);,跟第(1)項的內容還是一樣的。

(3)當輸入的是字串時,比如scanf("%c",a);這時你輸入的所有內容都是有效的,但它只取第一個字元。如你輸入」abc(回車)",則a="a",後面的字元也等於沒用上。如果你按的是「(空格)abc(回車)」,則a=(空格)——還是第一個空格!!

如果按「(空格)(空格)(空格)(回車)」則a=(空格)——因為第一個字元是空格。

(4)如果你在%c前面加上一個空格,如scanf("(空格)%c",a);,這時出現了變化!!它直接把前面的空格忽視,你如果這時按「abc(空格)(回車)」,則仍然a="a",可是你這時如果按(空格)abc(回車)」,則a=「a"——最前面的那一個空格被忽視了!!最可恨的是當你按「(空格)(空格)(空格)(回車)」時,程式還在等待中,它把你按的空格全部忽視了。

分析到這兒(應該說還沒有分析完全),你應該知道空格的作用了,所以,出現了你發出來的上圖的情況,你自己分析原因吧!

為避免出錯,一般不要加入空格。

2樓:文正

空格是c語言裡的空白符,起字串分割作用(在scanf中).也是所有資料之間的分割符.所以最好不要把空格當作輸入的,如果要輸入空格,用gets或getchar

c語言中用scanf函式輸入字元時,為什麼要在輸入控制符%c前面加空格?用scanf還有哪些要注意?

3樓:愛佳佳的恐龍

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

4樓:黑白say晚安

加空格遮蔽了空白字元。

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

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

scan:掃描       f :format,格式1、整數和小數分別使用使用控制符%d %lf 表示(float除外,用%f)。

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

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

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

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

6、在用"%c"輸入時,空格和「轉義字元」均作為有效字元。

5樓:匿名使用者

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

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

1.緩衝區

緩衝區是一塊存放臨時輸入資料的記憶體,我們在鍵盤上輸入資料之所以不會馬上顯示,就是因為資料存放在了緩衝區,在上面例子中,當我們按下回車鍵後,緩衝區的資料會傳送到標準輸入流。

2.標準輸入流

標準輸入流(stdin)是檔案指標,scanf()就是從標準輸入流或許資料。

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

電腦開始執行以下操作:

開始等待使用者輸入

2.當我們輸入資料,在按下回車鍵前會把資料儲存在緩衝區,按下回車鍵後,會把資料以及換行符(\n)一起傳送到標準輸入流(stdin)中,

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

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

使用scanf注意事項

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

2.輸入的資料型別一定要和所需要的資料型別一致

3.每次呼叫完scanf後,記得呼叫一個getchar()函式

擴充套件資料

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

2.函式的第一個引數是格式字串,它指定了輸入的格式,並按照格式說明符解析輸入對應位置的資訊並儲存於可變引數列表中對應的指標所指位置。

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

參考資料

網頁連結

6樓:西西哩的小馬甲

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

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

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

注意事項:

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

7樓:圈圈叉叉叉叉圈

這絕對不是為了美觀,1樓不要誤人子弟。

空格確實不是必須的,但有了空格就可以忽略你輸入的空格,懂我的意思嗎?

比如scanf(" %c" ,&c);

你輸入了' a'(a前面有個空格),a就能被c接受。但控制符前如果沒空格,那c就接受了空格,明白了沒?這個可以防止誤操作,忽略空格輸入,接受第一個非空格輸入!

8樓:夏天很冷

空格不是必須的,scanf("%c %c",a,b)只是提示在輸入時兩個字元必須有空格間開。如果是scanf("%c%c",a,b)那沒兩個輸入字元不要有空格,不過程式設計時最好加上空格,這算一個書寫規範吧,要不然如果你scanf("%s%s",a,b)系統可能區分不了你的字串何時結束。

9樓:湮魂

不是必須加空格,這並不能防止誤輸入的,這種**寫出來,用的人肯定只能是熟知**如何編寫的人,有無空格分隔使用者會根據其格式使用,個人感覺就是為了能讓別人看清楚

10樓:我要度百

空格不是必須的吧,我們是感覺看起來美觀一些而加入的呀

c語言裡空格是\加什麼

11樓:非常可愛

c中定義了一些字母前加"\"來表示常見的那些不能顯示的ascii字元,如\0,\t,\n等,就稱為轉義字元。

轉義字元具有特定的含義,不同於字元原有的意義,故稱「轉義」字元。例如,在前面各例題printf函式的格式串中用到的「\n」就是一個轉義字元,其意義是「回車換行」。轉義字元主要用來表示那些用一般字元不便於表示的控制**。

轉義字元是很多程式語言、資料格式和通訊協議的形式文法的一部分。對於一個給定的字母表,一個轉義字元的目的是開始一個字元序列,使得轉義字元開頭的該字元序列具有不同於該字元序列單獨出現時的語義。因此轉義字元開頭的字元序列被叫做轉義序列。

擴充套件資料常用的轉義字元及其含義

轉義字元轉義字元的意義ascii**

\n回車換行10

\t橫向跳到下一製表位置9

\b退格8

\r回車13

\f走紙換頁12

\\反斜線符"\"92

\'單引號符39

\」雙引號符34

\a鳴鈴7

\ddd1~3位八進位制數所代表的字元

\\xhh1~2位十六進位制數所代表的字元

12樓:匿名使用者

空格,也就是空字元(nul)的轉義字元是\0。

所有的ascii碼都可以用「\」加數字(一般是8進位制數字)來表示。

在ascii 編碼內,0~31(十進位制)範圍內的字元為控制字元,它們都是看不見的,不能在顯示器上顯示,甚至無法從鍵盤輸入,只能用轉義字元的形式來表示。不過,直接使用 ascii 碼記憶不方便,也不容易理解,所以,針對常用的控制字元,c語言又定義了簡寫方式,完整的列表如下:

13樓:匿名使用者

一、\0 是空字元(null)  但直接打空格就可以。

合法轉義字元如下:

\a 響鈴(bel)

\b 退格(bs)

\f 換頁(ff)

\n 換行(lf)

\r 回車(cr)

\t 水平製表(ht)

\v 垂直製表(vt)  0

\\ 反斜槓

\? 問號字元

\' 單引號字元

\" 雙引號字元

\0 空字元(null)

\ddd 任意字元  三位八進位制

\xhh 任意字元 二位十六進位制

擴充套件資料c語言中各運算子的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)。例如算術運算子的結合性是自左至右,即先左後右。

如有表示式x-y+z 則y 應先與「-」號結合,執行x-y 運算,然後再執行+z 的運算。這種自左至右的結合 方向就稱為「左結合性」。而自右至左的結合方向稱為「右結合性」。

最典型的右結合 性運算子是賦值運算子。如x=y=z,由於「=」的右結合性,應先執行y=z 再執行x=(y=z)運算。c語言運算子中有不少為右結合性,應注意區別,以避免理解錯誤。

14樓:劉2星雨

不是所有字元都需要轉義的,空格直接就敲空格,或者使用ascii碼值賦值為32

空格沒有轉義字元

合法轉義字元如下:

\a 響鈴(bel)

\b 退格(bs)

\f 換頁(ff)

\n 換行(lf)

\r 回車(cr)

\t 水平製表(ht)

\v 垂直製表(vt) 0

\\ 反斜槓

\? 問號字元

\' 單引號字元

\" 雙引號字元

\0 空字元(null)

\ddd 任意字元 三位八進位制

\xhh 任意字元 二位十六進位制

c語言scanf 輸入函式,c語言中的scanf 函式的用法

scanf是c語言中的一個輸入函式,與printf函式一樣,都被宣告在標頭檔案stdio.h裡,因此在使用scanf函式時要加上 include 在有一些實現中,printf函式與scanf函式在使用時可以不使用預編譯命令 include 它是格式輸入函式,即按使用者指定的格式從鍵盤上把資料輸入到指...

C語言中的清屏有什麼作用那,C語言中清屏函式是什麼?

c語言中的清屏的作用為 清除螢幕輸出。呼叫清屏時,螢幕上的所有輸出都將被清除,這相當於為軟體重新提供了畫布以自由輸出。螢幕清除通常用於以下情況 1 當最後一個功能的執行完成時,輸出不再重要,並且需要顯示新的內容或選單。2 對於加密,例如某些記憶遊戲,在顯示幾秒鐘後,清除所有輸出。3 要顯示大部分關鍵...

c語言中的取地址符的作用,c語言中的取地址是在什麼時候要用,為什麼要用

b是定義一個變數 而a是引用一個變數。它們之間沒有比較的必要,可能是你理解上有偏差。a和b完全沒有關係,int b 是定義一個變數,且沒有給其初始化,scanf是標準庫提供的輸入函式,函式格式是scanf char format,void p format 是輸入數 回據格式控制字串,void p,...