10/05/13 02:31:23
解決してタワーorz
922:デフォルトの名無しさん
10/05/13 03:55:38
成りすましにマジレスしなくてもw
923:デフォルトの名無しさん
10/05/13 09:44:49
Cでプログラム組んでます。
ファイルの扱い方で質問があります。
fopen、fread、fwrite、fseek、fclose
でファイルの読み込みや書き込みを行っているのですが
あるファイルを読み書き可能状態でfopenして
10バイトfwiteしたあと、fcloseせずに
書いたデータをファイルの最後から1バイトずつfseekして
freadして、その1バイトが特定の条件に一致した場合に
そこまで読み込んだデータを破棄して
10-fseekしたバイト数だけのファイルを作りたいのですが
そんなこと可能なのでしょうか?
fwiteする前に書き込みデータをチェックしたかったのですが
その部分には手を入れられないため、
1度書き込んだファイルの途中をぶった切れるのかが知りたいです。
■■■■■■■□□□
□を破棄して、■だけのデータを作りたいというようなイメージです。
924:デフォルトの名無しさん
10/05/13 09:55:29
chsize
925:デフォルトの名無しさん
10/05/13 09:56:49
>>923
ftruncate()が使えればできなくはないが、事情が許すなら別ファイルに書き出すのが無難。
926:デフォルトの名無しさん
10/05/13 10:00:44
>>923
fclose()した後に切り詰めたいなら>924かtruncate()、開いたまま切り詰めたいならftruncate()。
但し、後者はファイルハンドルをfileno()で取得する必要あり。
927:デフォルトの名無しさん
10/05/13 17:53:32
フィボナッチ数列を出力するプログラムを書いたのですが
どうもうまく動きません
どうすればいいでしょうか
#include<stdio.h>
#include<stdlib.h>
#define TERM 30
int main(void){
int fivo=0,n=0,temp;
FILE *fp;
fp=fopen("fivo.txt","wt");
if(fp==NULL){
fprintf(stderr,"ファイルオープンエラー");
exit(1);
}
while(fivo<=TERM){
if(fivo==1||fivo==2)n=1;
fprintf(fp,"F(%2d)=%10d\n",fivo,n);
fivo++;
temp=n;
n+=temp;
}
fclose(fp);
printf("正常に終了しました\nfivo.txtに保存しました");
return 0;
}