下のプログラムで分からない所がありますので、教えて頂ければと思います。宜しくお願い致します。
text = fgets(buf,256,fp);はfpのファイルから一行を読み込んでbufに格納するという処理ということは分かります。でも、while文内なので次にこの処理をする時に今度は、2行目(下の段)を読み込むはずですが、プログラム中のどこに2行目に移動させる処理があるのか分かりません。
予想ですが、text = fgets(buf,256,fp);の中にそのような意味の処理が含まれているのでしょうか?
どなたかご教授お願い致します。
#include <stdio.h>
int main(void)
{
FILE *fp;
char buf[256];
char *text;
char flname[256];
printf("ファイル名:");
gets(flname);
fp = fopen(flname,"r");
do{
text = fgets(buf,256,fp);
if(text != NULL){
printf("%s",text);
}
}while(text != NULL);
fclose(fp);
return(0);
}
No.3ベストアンサー
- 回答日時:
>予想ですが、text = fgets(buf,256,fp);の中にそのような意味の処理が含まれているのでしょうか?
ほぼその通りですが、読みとり位置をコントロールしているのはFILEポインタfpです。実際にはもう少し複雑ですが簡略化して説明します。
fgetsでは、FILEポインタfpから、指定文字数を読み、bufに格納します。格納後、fpには次の読みとり開始位置が入りますから、もう一度、fgets(buf,256,fp);が呼ばれると読み終わった次の位置から読み込まれるわけです。
なお、fgetsは、改行、ファイルの最後を見つけると文字数に達していなくてもそこで読みとりをやめます、この時、fpは改行の次の位置に移動するので、二行目が読めるわけです。
ですから
text = fgets(buf,256,fp);
text = fgets(buf,256,fp);
text = fgets(buf,256,fp);
のように三回呼べば三行進みます。
No.2
- 回答日時:
下記アドレスを読むと少し分かるのではないかと…。
ちなみに、処理を移動させるという記述は
}while(text!=NULL);
というところだと思います。
私もまだ初心者なので詳しく説明はできませんが…
参考URL:http://www.bohyoh.com/CandCPP/C/Library/fgets.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# C言語で再起関数とポインタを用いて文字列反転をする方法がわかりません。 4 2023/04/29 20:32
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
なぜCSQとCIP形式ではコ...
-
c言語でのfscanfについて
-
fgets( ) の返り値は何?
-
txtファイルの文字を配列に格納
-
c言語 ファイルから数字を読み...
-
【C言語】ファイルを読み込んで...
-
日本語ファイル名のFTPについて
-
C言語 連番データの読み込み
-
C言語を用いて、csvファイル内...
-
複数ファイルの同時読み込みの...
-
ガンマ変換 C言語でプログラ...
-
lockfについて
-
構造体とファイル検索(><)
-
C言語でファイル読み書きを早く...
-
ファイルへの書込み処理が異常...
-
fgets関数の利用 c言語
-
OpenGLによる描画内容をBMP出力
-
C言語 ファイル入出力について
-
CSVファイルの内容を構造体に格...
-
C言語でファイル名を変数にした...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c言語でのfscanfについて
-
C言語でファイル読み書きを早く...
-
fopenでファイル名に、変数を使...
-
複数ファイルの同時読み込みの...
-
fgets( ) の返り値は何?
-
テキストファイル内に対して, ...
-
ファイルへの書込み処理が異常...
-
C言語にてXMLファイルから任意...
-
ファイル出力で改行を入れたい!
-
C言語でセグメンテーションエ...
-
エラーがわかりません、、
-
ガンマ変換 C言語でプログラ...
-
自己相関関数を求めるプログラ...
-
VisualStudioでのファイルの入...
-
同時にファイル読み込み 書き込み
-
c言語 ファイルから数字を読み...
-
大量の入力ファイルを扱うとき...
-
ファイルが読み込めない・・・
-
【C言語】ファイルを読み込んで...
-
a*(1-exp(-bx))+cの近似の方法
おすすめ情報