C語言的scanf 函式問題

2022-12-09 10:05:19 字數 4953 閱讀 4756

1樓:第五讓營婉

scanf的意思就是接受的意思啊。

你輸入了換行相當於在此接受啊。

2樓:宇文元修宛辛

在printf函式中的''代表換行符,轉義字元只在printf中有意義,在scanf函式中無意義。像樓主這種狀況應該輸入:

"一個數"再按回車鍵。

3樓:網友

你理解錯誤了,在c語言裡面:

printf()函式是格式化輸出函式。

scanf()函式是格式化輸入函式。

4樓:點點滴滴清清風

這個意思就是說該字元所佔的寬度,不過,好像出現在scanf 中的比較少,而在輸出printf中比較常見的!

5樓:匿名使用者

%3c指定字數寬度,scanf("%3c",&a);輸入佔3列,前兩列補空格。

c語言 scanf()函式中使用%lf的問題

6樓:gta小雞

輸入e導致scanf讀取失敗,此時x的值是未定義的。

由於scanf讀入失敗,未能成功讀取的字元e被留在輸入緩衝區中;下次迴圈時,scanf又嘗試讀取輸入緩衝區中的e,自然再次讀取失敗,因而陷入無限迴圈。

7樓:反翽葚讛笀仕藖

不一樣的,這麼都是格式字元,意義如下:格式字元 意 義 d 以十進位制形式輸出帶符號整數(正數不輸出符號) o 以八進位制形式輸出無符號整數(不輸出字首0) x,x 以十六進位制形式輸出無符號整數(不輸出字首ox) u 以十進位制形式輸出無符號整數 f 以小數形式輸出單、雙精度實數 e,e 以指數形式輸出單、雙精度實數 g,g 以%f或%e中較短的輸出寬度輸出單、雙精度實數 c 輸出單個字元 s 輸出字串前面加個%,你自己對照下吧 長度:長度格式符為h,l兩種,h表示按短整型量輸出,l表示按長整型量輸出。

你這個「%lf」,是在定義輸入的型別為double(雙精度)是用的,不明白,你可以測試下: #include void main() 和 #include void main() 我這裡用了2個編譯器分別測試了下,一個如果定義double行,輸入的時候必須要用%lf,一個就不用了,用%f也行,但是精度還是有區別的,綜合以上,如果定義double型資料,輸入最好是用"%lf" .

c語言中關於scanf()函式分隔符問題? 50

8樓:自我程式設計

scanf不指定分割符號時,預設以空格、回車、製表符(tab),作為分割符號,可間隔多個分割符號。

至於你最後列印的c,那是換行符對應的ascii碼,因為你最後輸入的字元是回車。

9樓:網友

scanf函式在沒有人為設定分隔符時 字母和數字之間輸入時不需要加空格分隔符(特別是數字後輸入字元時,一般不要加空格,否則會增加麻煩)

c語言中scanf函式定義寬度的問題

10樓:網友

scanf("%4d",&a);表示若輸入小於或等於四位,則原樣輸出,若輸入大於四位,從左到右擷取你輸入的字元。

scanf("%4d",&a);表示若輸入小於或等於四位,則原樣輸出,若輸入大於四位,從右到坐擷取你輸入的字元。

11樓:_殘陽_古道

這個問題問的好。

你問題的第二種情況是說如果輸入多個字元型別資料的情況。

如果是這樣,請注意,除非,如果scanf後面的格式是%c的,那麼它只能吸收你輸入的一個字元,後面的東西全部放在快取區。也就是說,你再接上一個scanf( "c", c),它會繼續吸收你前面沒有吸收到的字元。

如果下面語句段:

scanf( "c", ch1 );

scanf( "c", ch2 );

scanf( "c", ch3 );

你輸入"ab"後按回車。那麼,a被ch1吸收,b被ch2吸收,ch3呢?你是不是以為沒有東西吸收?其實你輸入ab後按了回車,所以回車被ch3吸收了。這點一定要小心。

你的問題第一種情況就明顯很多了。

比如你的scanf語句吸收格式欄位是%4f,但是你輸入了那麼,它只會吸收,作為浮點型別。後面的15926以整型的方式存在於快取中。

學c語言一定要不停的去體悟它的輸入輸出,個人覺得它的重要性僅次於指標。

c語言中的scanf 函式的用法

12樓:次次次蛋黃米亞

1、用法:int scanf(char *format[,argument,..

scanf()函式是通用終端格式化輸入函式,它從標準輸入裝置(鍵盤) 讀取輸入的資訊。可以讀入任何固有型別的資料並自動把數值變換成適當的機內格式。

2、其呼叫格式為:

scanf("《格式化字串》",地址表》);

scanf()函式返回成功賦值的資料項數,出錯時則返回eof。

3、scanf()函式的控制串的使用:

#include ""

int main(void)

13樓:兔丞飛

輸出的值只是空格前面的字元是因為scanf函式的輸入格式錯誤,輸入引數的變數前需要加&。

scanf("%s",s);改為scanf("%s",&s);

scanf的用法是:scanf("格式控制字串",輸入引數一,輸入引數二);

格式控制字串包含:格式控制說明,普通字元。

1、格式控制字串表示輸入的格式,(int型用%d,float用%f,double型用%lf)

2、普通字元:在輸出資料的時候,按照原樣輸出的字元,如:"fahr=%d,celsius=%d"中的fahr=,celsius=。

3、輸入的引數是變數的地址,所以要在變數前面加&。

14樓:小肥肥

首先需要#include int scanf( const char *format, .scanf()函式是格式化輸入函式,它從標準輸入裝置(鍵盤) 讀取輸入的資訊。

第一個引數format為一個常量字串,這個字串中如果包含『%』符號則使用後續引數進行匹配。

如:scanf("%d%d", a, &b)。

15樓:如此_青春

scanf 函式最主要的用法是:

scanf("輸入控制符", 輸入引數);

用scanf()函式以%s格式讀入的資料不能含有空白符時,所有空白符都被當做資料結束的標誌。所以題中函式輸出的值只有空格前面的部分。

如果想要輸出包括空格在內的所有資料,可以使用gets()函式讀入資料。gets()函式的功能是讀取字串,並存放在指定的字元陣列中,遇到換行符或檔案結束標誌時結束讀入。換行符不作為讀取串的內容,讀取的換行符被轉換為字串結束標誌'\0'。

16樓:星座

scanf 後面的引數,就是要 寫變數的 地址。所以 int a,b; 就要 用 &a,&b 形式來呼叫 scanf.可是,如果是字串,char s[10]; scanf("%s",s); 引數 s 就 不要 &.

因為 s 就是 地址形式。scanf("%d,%d", a, &b); 還有,你這句輸入時,a b 資料之間還要加逗號。例如 12,34

因為格式裡有逗號。

17樓:魚與鹹魚

1、空白符問題。

#include

main()

2、回車符也佔位。

#include

main()

3、scanf()函式的引數輸入型別不匹配問題#include

main()

關於c語言scanf工作原理的問題

18樓:壤駟新之空錕

第一個問題,因為你的scanf函式使用了域寬來指定讀入的格式。所謂域寬,就是說讀入的時候把某個寬度內的值付給某變數。那麼。

你第一個引數讀入規則是%3c,意思是設定域寬為3,讀入一個char型資料。你輸入的是abcde。那麼前面的abc將作為第一個引數給一個char型資料。

而char型資料只需要一個字元,所以a就給了c1,其間的bc被忽略。後面同理了。第二個問題,樓上大致說明白了。

不解釋。

19樓:weida愛問

您好!!對於scanf的工作原理,你可以參考下scanf函式的使用說明。對於任何不按照scanf函式格式進行輸入的情況,都會導致得不到正確結果!

why??為什呢??對於這個問題,我是不推薦初學者去深究的,因為沒有意義!

scanf這個函式是一個庫函式,用於按照指定格式從鍵盤讀取資料,內部實現機理是較為複雜的,如果可以您可以去檢視下scanf函式的實現原始碼,但沒有必要深究!

20樓:匿名使用者

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

如果a和b都被成功讀入,那麼scanf的返回值就是2如果只有a被成功讀入,返回值為1

如果a和b都未被成功讀入,返回值為0

如果遇到錯誤或遇到end of file,返回值為eof。

且返回值為int型。

關於c語言中用scanf函式如何輸入資料的問題

21樓:匿名使用者

如果scanf中%d是連著寫的如「%d%d%d」,在輸入資料時,資料之間不可以加逗號,只能是空格或tab鍵或專者回車鍵——「2 3 4」

「2(按。屬tab)3(按tab)4(按tab)」。

若是「%d,%d,%d」,則在輸入資料時需要加「,」2,3,4」.

在輸入多個數值資料時,若格式控制串中沒有非格式字元作輸入資料之間的間隔,則可用空格,tab或回車作間隔。 c編譯在碰到空格,tab,回車或非法資料(如對「%d」輸入「12a」時,a即為非法資料)時即認為該資料結束。

22樓:匿名使用者

你的scanf("%c%c,&c1,&c2")寫錯了。

應該是scanf("%c%c",&c1,&c2)

C語言scanf 函式中使用lf的問題

編譯器問題 因為我是vs2012,所以沒有問題。原因是編譯器在編譯的時候沒有連結浮點數相關的庫,可以在定義變數的時候初始化一下。double a 0.0,像這樣,然後應該就ok了。scanf lf lf a,b printf lf lf a,b 注意程式格式書寫,必須用英文ascii 碼,例如 空格...

c語言中, scanf函式是什麼意思?

scanf是手動輸入並賦值給相應引數。例如scanf 輸入a引數 d a 即給輸入數字給a賦值。在程式執行之後從鍵盤錄入。c語言中scanf有什麼作用,scanf是c語言中的一個輸入函式,與printf函式一樣,都被宣告在標頭檔案裡,因此在使用scanf函式時要加上 include 在有一些實現中,...

c語言scanf函式輸入時鍵盤緩衝區n的問題

你首先要明白,從鍵盤讀入鍵盤緩衝區 buffer 的資料都是以ascii碼儲存的 包括回車 程式1 include stdio.h void main 鍵盤輸入 97 回車 第一次回車後,buffer中的ascii 39h,37h,0ah 0a是換行的ascii scanf會根據格式字串中的第一個 ...