通知
すべてクリア
固定ページ 2 / 2
前へ
Topic starter
2008年12月22日 11:23 AM
解決しました!
サイクリック後のシーク位置が間違ってました。
スキル不足のため冗長なコードでお恥ずかしいですが、
完成後のコードを載せます。
お付き合い頂いた皆様ありがとうございました!
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);
2008年12月22日 12:07 PM
> num = strlen(buf);
> numwrited += num; ← これ
これの計算位置がおかしいと思います
numwrited分seekさせるということは、その意味は
「前回書いた場所の最後=今回書き出す位置の先頭位置」
であると思いますが、
処理の前に、
numwrited =「前回書いた場所の最後」 + 「今回書き出す分」
||
「今回書き出した終えたときの、最後の位置」
になってる
固定ページ 2 / 2
前へ