(translator=pacific, ChineseSource=pacific-20020502-12.5\fscanf.html, EnglishSource=c:\matlabr12\help\techdoc\ref\fscanf.html)
MATLAB Function Reference    
fscanf

從檔案中讀取格式化的資料。

Syntax

Description

A = fscanf(fid,format) 從以 fid為識別編號的檔案中讀取資料,轉換成 format 所指定的格式再回傳給矩陣A。 fid 從i fopen指令中得到的檔案識別號碼(file identifier)。format 是用來讀取資料時所指定的格式。詳情請參閱 "Remarks"。

[A,count] = fscanf(fid,format,size) 讀取 size所指定的數量的資料,並轉換成 format所指定的格式存到矩陣A中count 為成功讀取的資料數目。 size 拿來決定要讀取多少資料。 size的用法如下:

n
讀取n個元素到行向量(column vector)中
inf
R一直讀到檔案結尾,存入元素數量和檔案內的元素一樣多的行向量。
[m,n]
使用行為順序(column order)的方式,讀取可以填滿m-by-n矩陣的元素。n可以設成inf,但m不行

MATLAB的fscanf C語言中的 scanf()fscanf() 最大的不同點在於MATLAB的 fscanf是以向量的格式來回傳。 並重覆讀取直到檔案結尾式是 size 所指定的數量之後才停止。

Remarks

當 MATLAB 讀檔時,會嘗試尋找和format格式相符的資料。若格式相符,則以行為順序(column order)的方式來寫入矩陣中。要是只有部分相符,則只把格式相符的資料寫入矩陣中。r

 format 包含平常字元(ordinary characters) 和/或 轉換規格(conversion specifications)。轉換規格(conversion specifications)是用來指定相符資料的內容格式。其內容包括字元%,非必要的資料長度(width fields),轉換字元(conversion characters),以下列的格式表示:

可在 % 和 轉換字元(conversion character)中加入下列符號:

星號 (*)
若符合的值不儲存在輸出矩陣中,就將之省略。
數字
最大的資料長度
特定字母
傳回的物件大小。 例如%hd 為短整數,因為 h 代表短。 %ld 為長整數,因為 l 代表長。 %lg 代表雙倍浮點數。

轉換字元(conversion characters)用法如下:

%c
被資料長度 (field width)所指定長度的字元
%d
十進位數
%e, %f, %g
浮點數
%i
有正負號的整數
%o
有正負號的八進數數
%s
沒有空白字元的字串
%u
有正負號的十進位數
%x
有正負號的十六進位數
[...]
一串字元(scanlist)

在使用 %s 時,一個元素可能會用到多個 MATLAB 的矩陣元素,而每個矩陣元素都儲存一個字元。因此我們可以利用 %c 來讀取空白字元, 利用 %s 來讀取連續的空白。

Mixing character and numeric conversion specifications cause the resulting matrix to be numeric and any characters read to appear as their ASCII values, one character per MATLAB matrix element.

若要知道更多有關format的資料,可參考C語言中的 scanf()fscanf() 指令。

Examples

下列的範例是利用fprintf產生名為 exp.txt的ASCII文件檔,內容為:

讀取這個檔案並儲存到行數為二的MATLAB矩陣中:

See Also

fgetl, fgets, fread, fprintf, fscanf, input, sscanf, textread


 frewind fscanf (serial)