fopen with 'a' 無法使用 fseek 對檔案指標進行倒退嚕
這兩天運氣不怎好 總是卡在奇怪的 bug 中
真的是太嫩了 還差得遠
=========================================================
= By finwater (cheer up) @ Mon Jun 23 20:15:07 2008
=
fopen with flag 'a' 的 'a' 是 append 的意思
所以 write 的 data 會被自動 append 到檔案的最後
無論此時 offset 在哪
但還是可以使用 fseek 對 file pointer 的 offset 進行操作
=========================================================
@ code 1 : fopen with 'ab+'
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE * fd = fopen ("dd" , "ab+");
fd = fopen ("dd" , "w+");
fclose ( fd );
fd = fopen ("dd" , "ab+");
fprintf( fd , "0123456789" );
fseek( fd , -5 , SEEK_CUR );
fprintf( fd , "0123456789" );
fclose ( fd );
return 0;
}
結果: 01234567890123456789
@ code 2 : fopen wtih 'rb+'
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE * fd = fopen ("dd" , "ab+");
fd = fopen ("dd" , "w+");
fclose ( fd );
fd = fopen ("dd" , "rb+");
fprintf( fd , "0123456789" );
fseek( fd , -5 , SEEK_CUR );
fprintf( fd , "0123456789" );
fclose ( fd );
return 0;
}
結果: 012340123456789
沒有留言:
張貼留言