7.6 列印函數FPRINTF
其格式如下:
count=fprintf(fid, format,A,…)
這是一個很通用的輸出指令,其輸出之格式依照指定的format,後面是所要輸出之參數名稱。其中fid代表輸出的裝置,fid=1代表標準裝置,或為螢幕,所以可以印在指令窗內。若要輸出至某一個檔案,則必須先將該檔案打開,即open指令打開一個檔,然後訂一個共通的代號fid。
列印格式則由format制定。format係由一系列包括C語言轉換碼之文字。其轉換控制包括符號、對齊、有效位數、欄寬及其他輸出之控制格式。此字串可包括特定字母,可代表非文字之控制標如新行及定位等。
這些轉換格式均以%符號開頭,並可能包括下列之項目:
- 正負旗標
- 欄寬及位數
- 上下標
- 轉換文字
上述的項目中,轉換文字必須存在,其餘視情況作選擇。
正負旗標位於輸出數字之前,可用+,-,0作為控制數字符號之用,若使用負號(-),則表示採用左邊對齊,正號(+)代表要印出該數字之正負號,若用零(0)置於前,表示其前面滿0。其例如%-10.5d、%+10.5d、%010.5d等等。
欄位寬度及有效位數則由數值表示,小數點前之數字代表總位數,如%6f,表示要列印六位數;若小數點後面有數字,表示該數之小數位數,如%6.3f表示有三位數小數,但總欄寬(包括小數點)為六位數。
格式標則在標明印出數值之性質,常用的如d代表十進位,e代表指數表示法,相關資訊如表5.2:
表7.2 格式標代碼表
格式標代碼 | 說明 |
%c | 單一文字 |
%d | 十進位(有正負符號) |
%e | 指數格式(如小寫1.414e+01) |
%E | 指數格式(如大寫1.414E+01) |
%f | 固定位數 |
%g | 較%f或%e更為簡潔的型式,使用小寫e |
%G | 同%g但使用大寫E |
%i | 十進位(有正負符號) |
%o | 八進位(無正負符號) |
%s | 一串文字 |
%u | 十進位(無正負符號) |
%x | 十六進位(使用小寫文字a-f) |
%X | 十六進位(使用大寫文字A-F) |
在format格式中,也常使用控制標以印出控制的動作,這些包括換行、換頁等等,其項目如表5.3:
表7.3 控制標代碼表
控制標 | 說明 |
\b | 倒退一格 |
\f | 進一頁 |
\n | 跳一新行 |
\r | 回行 |
\t | 水平跳格 |
\\ | 反斜線符號 |
\'' | 單括號 |
%% | 百分比% |
下面為產生一串正弦值,然後將其存於一個名叫sinx.txt之文字檔案內。在新開一個檔時,通常要先用fopen開啟,等利用fprintf存完後,再用fclose令其關閉。才算存檔完成。
x=0:pi/10:pi; % %將pi分成十等分,置於x中
y=sin(x); %計算sin(x)值,置於y
% 打開一個名叫sinx.txt的文字檔,將其代碼設為fid,'w'代表要寫入
fid=fopen('sinx.txt','w');
%列印資料x,y於檔案中,格式x為%6.4f;y為%10.8f
fprintf(fid,'%6.4f %10.8f\n',x,y);
fclose(fid); %關閉檔案
type sinx.txt %將存檔內容印出
0.0000 0.31415927
0.6283 0.94247780
1.2566 1.57079633
1.8850 2.19911486
2.5133 2.82743339
3.1416 0.00000000
0.3090 0.58778525
0.8090 0.95105652
1.0000 0.95105652
0.8090 0.58778525
0.3090 0.00000000
在format格式中,亦可包括其他文字,使印出的報告容易閱讀。比如說:
>>height=178;
>>fprintf(1, '我的身高有 %4.0f cm,也就相當於 %4.2f ft.', height, height/30.48);
我的身高有 178 cm,也就相當於 5.84 ft.
這樣的文字讀起來也比較人性化一些。在此,fprintf括號內第一個參數1表示印在螢幕中,而中間即為格式之內容。其中除文字本身外,遇到%時表示是輸出變數的格式,而每遇到一個%的型式就需要有一個變數對應。故第一個%4.0f 對應變數height,第二個%4.2f對應height/30.48。
由於格式format 中,已經用掉撇號'、反斜線\及百分比號%,因此若要在文字中出現這些文字時,必須寫上兩次。例如:
>>fprintf(1,'My mother''s book is not 100%% complete yet.\n')
My mother's book is not 100% complete yet.
最後的\n表示跳到下一行列印。
相對於輸出之fprint指令,讀入資料可以利用fscan指令,其應用請待下回分解。
沒有留言:
張貼留言