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

2022-02-16 23:58:33 字數 5513 閱讀 1016

1樓:匿名使用者

scanf是c語言中的一個輸入函式,與printf函式一樣,都被宣告在標頭檔案stdio.h裡,因此在使用scanf函式時要加上#include 。(在有一些實現中,printf函式與scanf函式在使用時可以不使用預編譯命令#include 。

)它是格式輸入函式,即按使用者指定的格式從鍵盤上把資料輸入到指定的變數之中。scanf函式返回成功讀入的資料項數,讀入資料時遇到了「檔案結束」則返回eof。

2樓:匿名使用者

到底能不能用逗號間隔取決於你的輸入格式:

scanf("%d%d",&a,&b),這種就是要用空格和回車間隔scanf("%d %d",&a,&b),兩個%d之間有空格,這個就必須用空格間隔

scanf("%d,%d",&a,&b),兩個%d之間是逗號,這個就必須用逗號間隔

綜上所述,scanf裡的輸入格式是怎麼間隔的,你就要怎麼間隔,如果沒有間隔,則預設為用空格和回車間隔,知道了嗎?

3樓:匿名使用者

不相悖的,因為float的精度比int的精度要高,寬度長,所以這兩個變數也可以,但是如果你要是反過來就不行了,你可以試試!!

4樓:百目文科

c中型別轉換沒有十分明顯,它是自己幫你轉換了,你編譯時會出現一個警告。如果在其他比較重要的話就會 執行出錯。在c++中也會的。

所以 你用float型別時可以得出結果,但是型別不一樣

c語言中的scanf 函式的用法

5樓:次次次蛋黃米亞

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

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

2、其呼叫格式為:

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

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

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

#include "stdio.h"

int main(void)

6樓:兔丞飛

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

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

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

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

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

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

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

擴充套件資料

「輸出控制符」和「輸出引數」無論在「順序上」還是在「個數上」一定要一一對應。這句話同樣對 scanf 有效,即「輸入控制符」和「輸入引數」無論在「順序上」還是在「個數上」一定要一一對應。比如:

# include

int main(void)

7樓:小肥肥

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

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

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

擴充套件資料:

1、格式指令說明

format指向的字串包含的格式指令由以下字元序列組成:*,表示讀入的資料將被捨棄。帶有*的格式指令不對應可變引數列表中的任何資料。

2、域寬

以一個非零的十進位制整數形式出現。表示該格式指令最多讀入的字元數。

3、格式說明符

c 讀入域寬指定的數目個字元組成的字元序列(後面不會加上空位元組),如果省略寬度則讀入單字元。如%c或%1c讀入單字元,%2c讀入兩個字元(後面不會加上空位元組),以此類推。

s讀入一個的字元序列,後面會加上空位元組。

d,u讀入可選有符號(可選有符號表示輸入時可以帶符號也可以不帶符號,不帶符號則視為非負)十進位制整數。輸入格式應該像strtol函式的base實參為10呼叫時識別的字元序列一樣。

i 讀入可選有符號整數。輸入格式應該像strtol函式的base實參為0呼叫時識別的字元序列一樣。

a,e,f,g,a,e,f,g 讀入可選有符號浮點數,輸入格式應該像strtod函式識別的字元序列一樣。

o讀入可選有符號八進位制整數。輸入格式應該像strtoul函式的base實參為8呼叫時識別的字元序列一樣。

x,x讀入可選有符號十六進位制整數。輸入格式應該像strtoul函式的base實參為16呼叫時識別的字元序列一樣。

p讀入一個指標值。讀入的字元序列應該與fprintf的%p產生的字元序列形式相同。

n不讀入任何字元,而是把到該位置已讀入的字元數儲存到與之對應的int*指向的位置。本轉換說明符如果帶有*或者帶有域寬資訊(如:%*n或%3n等),則後果是未定義的。

8樓:如此_青春

scanf 函式最主要的用法是:

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

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

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

擴充套件資料:

使用scanf()函式需要注意的問題:

1.對於字串陣列或字串指標變數,由於陣列名可以轉換為陣列和指標變數名本身就是地址,因此使用scanf()函式時,不需要在它們前面加上"&"操作符。

2.可以在格式化字串中的"%"各格式化規定符之間加入一個整數,表示任何讀操作中的最大位數。

3.scanf函式中沒有類似printf的精度控制。

如:scanf("%5.2f",&a); 是非法的。不能企圖用此語句輸入小數為2位的實數。

4.scanf中要求給出變數地址,如給出變數名則會出錯

如:scanf("%d",a);是非法的,應改為scanf("%d",&a);才是合法的。

5.在輸入多個數值資料時,若格式控制串中沒有非格式字元作輸入資料之間的間隔,則可用空格,tab或回車作間隔。

c編譯在碰到空格,tab,回車或非法資料(如對「%d」輸入「12a」時,a即為非法資料)時即認為該資料結束。

6.在輸入字元資料(%c)時,若格式控制串中無非格式字元,則認為所有輸入的字元均為有效字元。

9樓:星座

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

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

因為格式裡有逗號。

擴充套件資料:

注意問題

(1)在高版本的 visual studio 編譯器中,scanf 被認為是不安全的,被棄用,應當使用scanf_s代替 scanf。

(2) 對於字串陣列或字串指標變數,由於陣列名可以轉換為陣列和指標變數名本身就是地址,因此使用scanf()函式時,不需要在它們前面加上"&"操作符。

(3) 可以在格式化字串中的"%"各格式化規定符之間加入一個整數,表示任何讀操作中的最大位數。

(4) scanf函式中沒有類似printf的精度控制。

如: scanf("%5.2f",&a); 是非法的。不能企圖用此語句輸入小數為2位的實數。

(5) scanf中要求給出變數地址,如給出變數名則會出錯

如 scanf("%d",a);是非法的,應改為scanf("%d",&a);才是合法的。

(6) 在輸入多個數值資料時,若格式控制串中沒有非格式字元作輸入資料之間的間隔,則可用空格,tab或回車作間隔。

c編譯在碰到空格,tab,回車或非法資料(如對「%d」輸入「12a」時,a即為非法資料)時即認為該資料結束。

(7) 在輸入字元資料(%c)時,若格式控制串中無非格式字元,則認為所有輸入的字元均為有效字元。

10樓:魚與鹹魚

1、空白符問題

#include

main()

2、回車符也佔位。

#include

main()

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

main()

c語言中scanf輸入函式如何使用

11樓:匿名使用者

scanf是c語言中的一個輸入函式,與printf函式一樣,都被宣告在標頭檔案stdio.h裡,因此在使用scanf函式時要加上#include 。(在有一些實現中,printf函式與scanf函式在使用時可以不使用預編譯命令#include 。

)它是格式輸入函式,即按使用者指定的格式從鍵盤上把資料輸入到指定的變數之中。scanf函式返回成功讀入的資料項數,讀入資料時遇到了「檔案結束」則返回eof。

12樓:匿名使用者

int a;

scanf("%d",&a);

c語言中的scanf函式中的輸入

13樓:橋芝鎮怡君

一.鍵盤:

scanf("a=%d

b=%d",&a,&b);

輸入:a=4

b=3回車

注意輸入時要注意與scanf中「」裡的寫法相匹配,有a=就一定輸入a=?,中間有空格,空格一定要照打

scanf("%f

%e",&x,&y);

輸入:4.3

3e2回車

scanf("

%c%c",&c1,&c2);

輸入:a

b回車二.c++

c++寫法與c完全不同,它用的是

cin>>a>>b>>x>>y>>c1>>c2;

輸入:4

34.3

3e2a

b回車或者中間的空格換成回車

14樓:沃渟金添智

在vc中輸入的話,你要嚴格的按照格式輸入,例如你的

scanf種的格式是a=%d

b=%d,那麼輸入時就要是a=數字b=數字enter鍵結束!

%f%e你在%f和%e中間插了個空格,所以在輸入時是「資料空格鍵資料enter

%c%c這個同第二個一樣。

c語言中,scanf函式中用d,執行時輸入數值時要用空格隔

scanf函式中用 d,執行時輸入數值時不要用空格隔開,就會把二個整數當作是專 一個整數 並且屬scanf讀入數值時,會把前面的空格自動忽略的。但如果用 c就不行,因為空格也是一個字元,也可以用 c讀入的。因為 c只取一個字元 d就未必了 c語言中用scanf函式輸入字元時,為什麼要在輸入控制符 c...

c語言如何輸入中文,C語言如何輸入中文

輸入以下 就可以輸入中文了 如果是用tc進行程式設計,那麼只能顯示英文,如果用vc進行程式設計就可以顯示中文了。兩者只是編譯工具不一樣,程式語言的使用是一樣的。include include int main char name 6 20 char temp 20 printf 請輸入6個人的名字 ...

c語言pow 函式問題,C語言pow 函式問題。

應該浮點型整型數點面資料丟失造精度準確程式實參a,b,c都整型所warning資料精度丟失 樓下的說的都對,那我給你提供一個另外的方法的,直接不使用math標頭檔案裡的函式,利用其原理自己編寫一個可以隨意改變型別的函式。這是int的。include int pow int x,int y void ...