matlab中fgetl、fgets、fread函數


tline = fgets(fileID)

從文件中讀取行,保留換行符 (換行符和回車符)

 
從文件中讀取行,保留換行符 讀取指定的文件的下一行,包括換行符。 fileid是一個整數文件標識符從fopen獲得。 tline是一個文本字符串,除非該行只包含結束的文件標記。在這種情況下,tline是數字值-1。與fgets讀取字符的編碼方案使用與該文件相關聯。要指定的編碼方案,使用fopen。

tline=fgetl(fid)
從文件中讀取行,刪除文件換行符

返回由文件標識符fid指示的文件的下一行。如果fgetl遇到文件結束指示符,則返回-1。對於fid的完整描述請參考fopen函數。fgetl函數常用於含有文件換行符的文件。 

例如:mm.txt文件內容

1 2 2 3
4 5 6
2 5 6 8
265
3

利用 fgetl()讀入時結果:

c=fgetl(fid)

c =

1 2 2 3

利用fgets()讀入結果

>> a=fgets(fid)

a =

1 2 2 3

>> whos c
  Name      Size                    Bytes  Class

  c         1x7                        14  char array

Grand total is 7 elements using 14 bytes

>> whos a
  Name      Size                    Bytes  Class

  a         1x9                        18  char array

Grand total is 9 elements using 18 bytes

當利用fread()讀入時,便可以清楚的理解利用fgets()多出來的兩個字符。

e=fread(fid)

e =

    49
    32
    50
    32
    50
    32
    51
    13
    10
    52
    32
    53
    32
    54
    13
    10
    50
    32
    53
    32
    54
    32
    56
    13
    10
    50
    54
    53
    13
    10
    51

可以看到,利用fread讀入的是二進制ASCII碼,ASCII碼10 和13 對應的是換行符和回車符。這就是fgets()為什么比fgetl()多兩個字符的原因,在每個換行的時候都會有換行符和回車符。

當利用UltrEdit打開mm.txt文件轉換二進制格式就可以看到

 

 

都是從文本文件里面讀一行的內容,差別在於,前者返回的結果中包含換行符而后者忽略換行符。另外還有一點,fgets 調用時可以附加一個參數,指定一次最多讀多少個字符(在行很長的時候避免消耗資源太大)。

事實上,如果你細心點看看,會發現其實 fgetl 是通過調用 fgets 實現的——換言之,fgets是內建(built-in)函數,而fgetl是可以看到源代碼的m-文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM