- 締切済み
ファイルポインタ
C言語でテキストからファイルを検索するプログラムを作っているのですが ファイルポインタ FILE *fpはgetcなどを使うと自動で入力されますが手動で普通のポインタみたいに fp++などはできないのでしょうか
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- JaritenCat
- ベストアンサー率37% (122/322)
僕が使っているコンパイラのFILE構造体はこうなってました。 typedef struct { unsigned char *curp; /* Current active pointer */ unsigned char *buffer; /* Data transfer buffer */ int level; /* fill/empty level of buffer */ int bsize; /* Buffer size */ unsigned short istemp; /* Temporary file indicator */ unsigned short flags; /* File status flags */ wchar_t hold; /* Ungetc char if no buffer */ char fd; /* File descriptor */ unsigned char token; /* Used for validity checking */ } FILE; /* This is the FILE object */ fpはこのFILE構造体へのポインタですので、fp++しても意味ありませんね。
- asuncion
- ベストアンサー率33% (2127/6289)
> while((c=getc(fp))!=EOF) この前に、必ず fp = fopen(~); でfpを取得している箇所がありますね。 取得したfpを使って、getc()などの関数で ファイルの中身を読んでいるわけで、 > FILE *fpはgetcなどを使うと自動で入力されます そうではないです。 それとも、「自動で入力」という内容を私が取り違えていますか?
- arain
- ベストアンサー率27% (292/1049)
質問文からは、「読みたい位置にファイルポインタを移動したい」と解釈します。 であれば、No.1氏のとおりseek()となります。 尚、ファイル「ポインタ」と名前はついていますが、 このFILE型は、その内部に現在読み込んでいる位置などの情報を含むデータ型となっています。 そのため単純にfp++と行ってはいけません。
- asuncion
- ベストアンサー率33% (2127/6289)
> FILE *fpはgetcなどを使うと自動で入力されます ここの意味をつかみきれません。 サンプルコードか何かを提示していただけますか?
補足
while((c=getc(fp))!=EOF) これです・・・ 普通のポインタはwhile文使って fp++とか使ってできるのになぜファイル操作はできないのかわかりません
- Gizensha
- ベストアンサー率34% (207/608)
seek?
お礼
フムフムなるほど そういうことなんですね( ..)φメモメモ seek()というのをつかうんですね ありがとうございます(^0^)