C語言中fscanf函式

2021-07-11 23:08:03 字數 2743 閱讀 8722

編輯

函式名: fscanf

功 能: 從乙個流中執行格式化輸入,fscanf遇到空格和換行時結束,注意空格時也結束。這與

fgets有區別,fgets遇到空格不結束。

返回值:整型,成功返回讀入的引數的個數,失敗返回eof(-1)。

用法:1

intfscanf(file*stream,constchar*format,[argument...]);

file *stream:檔案指標

char *format:格式字串

[argument...]:輸入列表 編輯

常用基本引數對照:

%d:讀入乙個十進位制整數.

%i :讀入十進位制,

八進位制,十六進製制整數,與%d類似,但是在編譯時通過資料前置或後置來區分進製,如加入「0x」則是十六進製制,加入「0」則為八進位制。例如串「031」使用%d時會被算作31,但是使用%i時會算作25.

%u:讀入乙個無符號十進位制整數.

%f %f %g %g : 用來輸入實數,可以用小數形式或指數形式輸入.

%x %x: 讀入十六進製制整數.

%o': 讀入八進位制整數.

%s : 讀入乙個字串,遇空字元『\0'結束。

%c : 讀入乙個字元。無法讀入空值。空格可以被讀入。

附加格式說明字元表修飾符說明

l/l 長度修飾符 輸入"長"資料

h 長度修飾符 輸入"短"資料

示例說明

如果要求從標準輸入中輸入一串字串和乙個整型數,那麼引數「%s%d」表示什麼呢?預設情況下,在終端上(這裡假設程式為控制台應用程式)輸入第乙個引數的值的時候敲下回車,則在第二行輸入的為第二個引數值,採用這種輸入方法那麼格式字元的形式就無關緊要了。

這裡要特殊說明的是如果引數在同一行給出,那麼格式字元的引數與終端的輸入會有什麼關係。舉個例子:如果格式字元為「%s+%d」,那麼引數的輸入就應該為 string + integer。 編輯

12

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include

#include

intmain(void)

return0;

}

返回eof如果讀取到檔案結尾。

附:msdn中例子

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

#include

file*stream;

intmain(void)

return0;

}//這樣會有意外輸出

關於scanf函式返回值的理解及用法

1.scanf()函式有返回值且為int型。scanf返回值表示成功讀入的資料個數。 

2.scanf()函式返回的值為:正確按指定格式輸入變數的個數;也即能正確接收到值的變數個數。 

例如,scanf("%d%d", &a, &b); 如下為返回值的四種情況

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

(2) 如果只有a被成功讀入,返回值為1

(3)如果a和b都未被成功讀入,返回值為0(即scanf函式遇到非法輸入時,返回值為0)

(4)如果遇到錯誤或遇到檔案結束符(end of file,eof,控制台下用ctrl+z輸入)則返回eof(stdio.h中定義符號常量:#define eof -1)。

由此例可見因此可利用scanf函式的返回值判斷資料是否正確讀入。

C語言中的fscanf函式

實現功能 test.txt中存放如下資料,把資料讀入到整型陣列xx 50 中。1 2 3 4 5 6 7 8 9 10 21 22 23 24 25 26 27 28 29 30 41 42 43 44 45 46 47 48 49 50 61 62 63 64 65 66 67 68 69 70 ...

c語言中fscanf和fprintf

很多時候我們需要寫入資料到檔案中時都覺得很困擾,因為格式亂七八槽的,可讀性太差了,於是我們就想有沒有什麼函式可以格式化的從檔案中輸入和輸出呢,還真有。下面我將講解 一下fscanf和fprintf的強大之處。1 fscanf 可以從乙個檔案流中格式化讀出資料,遇到空格或回車就停止 原型 intfsc...

C語言中fgets和fscanf區別詳解

c語言中fgets和fscanf區別詳解 一 作用上的大概區別 fgets 從檔案中讀取ydklbiid一行資料存入www.cppcns.com緩衝區 fgets遇到回車才會結束,不對空格和回車做任何轉換就錄入到緩衝區,結束後再往緩衝區寫多乙個 0,所以它是讀一行資料 fscanf 從檔案中讀取一段...