サイクリックログ – 固定ページ 2 – プログラミング – Home

通知
すべてクリア

[解決済] サイクリックログ

固定ページ 2 / 2

DA
 DA
(@DA)
ゲスト
結合: 21年前
投稿: 10
Topic starter  

解決しました!
サイクリック後のシーク位置が間違ってました。
スキル不足のため冗長なコードでお恥ずかしいですが、
完成後のコードを載せます。
お付き合い頂いた皆様ありがとうございました!

    num = strlen(buf);
numwrited += num;

//サイクリック開始後は、
if(logcnt > 30){
if( (logcnt % 30) == 1 ){
numwrited = num;
fp = fopen(szFileNameBuf, r+b);
fseek(fp, 0, SEEK_SET);
}
else{
//読み書きモードでopen
fp = fopen(szFileNameBuf, r+b);
fseek(fp, numwrited-num, SEEK_SET);
}
}
//サイクリック開始まではただの追記でopen
else{
fp = fopen(szFileNameBuf, a+b);
}

//bufをnumBYTE、一括で書込み
fwrite(buf, num, 1, fp);
fclose(fp);


返信引用
rin
 rin
(@rin)
ゲスト
結合: 18年前
投稿: 112
 

>   num = strlen(buf);
> numwrited += num; ← これ

これの計算位置がおかしいと思います

numwrited分seekさせるということは、その意味は
「前回書いた場所の最後=今回書き出す位置の先頭位置」
であると思いますが、

処理の前に、
numwrited =「前回書いた場所の最後」 + 「今回書き出す分」
 ||
「今回書き出した終えたときの、最後の位置」
になってる


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました