fscanf

fscanf

fscanf 位於頭檔案<stdio.h>中,函式原型為 int fscanf(FILE * stream, const char * format, [argument...]); 其功能為根據數據格式(format)從輸入流(stream)中讀入數據(存儲到argument);與fgets的差別在於:fscanf遇到空格和換行時結束,注意空格時也結束,fgets遇到空格不結束。

基本介紹

  • 中文名:fscanf
  • 外文名:fscanf
  • 類別:計算機軟體
  • 簡述:C語言中基本的檔案操作
  • 函式名:fscanf
  • FILE *stream:檔案指針
一般形式,格式字元說明,程式例,例一,例二,

一般形式

函式名: fscanf
功 能: 從一個流中執行格式化輸入,fscanf遇到空格和換行時結束,注意空格時也結束。這與fgets有區別,fgets遇到空格不結束。
返回值:整型,成功返回讀入的參數的個數,失敗返回EOF(-1)。
用法:
int fscanf(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。

程式例

例一

#include <stdlib.h>#include <stdio.h>int main(void){    int i;    printf("Input an integer:");    /*從標準輸入中讀取一個整數*/    if(fscanf(stdin, "%d",&i))    printf("The integer read was:%d\n", i);    else    {        fprintf(stderr, "Error reading an integer from stdin.\n");        exit(1);    }    return 0;}返回EOF如果讀取到檔案結尾。

例二

附:MSDN中例子
#include <stdio.h>FILE *stream;int main(void){    long l;    float fp;    char s[81];    char c;    stream = fopen("fscanf.out", "w+");    if(stream==NULL)    printf("The file fscanf.out was not opened\n");    else    {        fprintf(stream,"%s%ld%f%c","a-string", 65000,3.14159, 'x');        /*將指針設定至檔案開頭*/        fseek(stream,0L,SEEK_SET);        /*從檔案中讀取數據*/        fscanf(stream,"%s",s);        fscanf(stream,"%ld",&l);        fscanf(stream,"%f",&fp);        fscanf(stream,"%c",&c);       /*輸出讀取的數據*/        printf("%s\n",s);        printf("%ld\n",l);        printf("%f\n",fp);        printf("%c\n",c);        fclose(stream);    }    return 0;}//這樣會有意外輸出

相關詞條

熱門詞條

聯絡我們