18-8 ������������������������

¨C¤@¦¸¶}±ÒÀɮ׮ɡAMATLAB §Y«O«ù¤@­ÓÀɮצì¸m«ü¼Ð¡]File Position Indicator¡^¡A¥H¨M©w¤U¤@¦¸¶i¦æ¸ê®ÆÅª¨ú©Î¼g¤Jªº¦ì¸m¡C±±¨î¦¹«ü¼Ðªº¨ç¼Æ¦p¤U¡G

¨ç¼Æ¥\¯à
feof ´ú¸Õ«ü¼Ð¬O§_¦bÀÉ®×µ²§ô¦ì¸m
fseek ³]©w«ü¼Ð¦ì¸m
ftell ¨ú±o«ü¼Ð¦ì¸m
frewind ­«³]«ü¼Ð¦ÜÀÉ®×°_©l¦ì¸m

foef ¥i¥Î©ó´ú¸Õ«ü¼Ð¬O§_¦bÀÉ®×µ²§ô¦ì¸m¡A¨Ò¦p

Example 1: 18-ÀÉ®×Ū¼g/feof01.mfid = fopen('test.txt'); A = fscanf(fid, '%g', [3 4]) feof(fid) A = 1 16 49 100 4 25 64 0 9 36 81 0 ans = 1

¦b¤W¨Ò¤¤¡Afeof(fid) ¶Ç¦^ 1¡Aªí¥ÜÀɮ׫ü¼Ð¤w¸g¦bÀÉ®×µ²§ô¦ì¸m¡A¦]¬° test.txt ¥u¥]§t 10 ­Ó¼Æ¥Ø¦r¡C­Y­n¦b±q test.txt ªº°_©l¦ì¸mŪ¥X¸ê®Æ¡A¥i¥Î frewind ¨Ó­«³]«ü¼Ðªº¦ì¸m¡G

>> frewind(fid); >> A = fscanf(fid, '%g', 5) A = 1 4 9 16 25

fseek ¨ç¼Æ¥i¥Î©ó³]©w«ü¼Ð¦ì¸m¡A¨ä®æ¦¡¦p¤U

status = fseek(fid, offset, origin)

¨ä¤¤ fid ¬OÀÉ®×ÃѧO½X¡Aoffset ¬O°¾²¾¶q¡]¥H byte ¬°³æ¦ì¡A¥i¥H¬O¥¿¼Æ©Î­t¼Æ¡^¡Aorigin ¥Nªí°ò·ÇÂI¡A¥i¥]§t¤U¦C¦r¦ê¡G

ftell «h¥i¥Î©ó¶Ç¦^²{¦bªº«ü¼Ð¦ì¸m¡C¨Ò¦p

Example 2: 18-ÀÉ®×Ū¼g/ftell01.mfid = fopen('test.bin', 'w'); count = fwrite(fid, randperm(10), 'int32'); ftell(fid) ans = 40

40 ¥Nªí«ü¼Ð¤w¦bÀÉ®×µ²§ô¦ì¸m¡C±ý±N«ü¼Ð¦V«e²¾°Ê 10 bytes¡A¥i¿é¤J¦p¤U¡G

>> fseek(fid, -10, 'cof'); >> ftell(fid) ans = 30

¦¹¥Nªí«ü¼Ðªº·s¦ì¸m¬O 30¡C


MATLABµ{¦¡³]­p¡G¤Jªù½g