• 締切済み

続・EOF判定されない

a-kumaの回答

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.3

ん~、何がうまくいかないのか、よく分からんです。 と、いうわけで、提示された仕様に忠実にデータを抱えてしまっていますし、 エラーチェックもしてませんが、こんな感じの関数で良いんじゃないですか? #include <stdio.h> int xxx() {   char buf[1024];   static FILE* in = NULL;   if (in == NULL) {     in = fopen("inputfile.txt", "r");   }   if (fgets(buf, sizeof(buf), in) == NULL) {     if (feof(in)) {       return 4;     }   }   return 0; } /* テストコード */ int main() {   int ret;   int i;   for (i = 0 ; (ret = xxx()) == 0 ; ++i) { printf("%d\n", i); }   printf("ret = %d\n", ret);   return 0; }

関連するQ&A

  • EOF判定されない

    if(fgets(buff, 21, fp) == NULL) {   if(!feof(fp))   {     rtn_code[0] = '8';   }   else   {     rtn_code[0] = '4';   } } -------------------------------------- /入力ファイル/ -------------------------------------- 1行目 AAAAABBBBBCCCCCDDDD[LF] 2行目 EEEEEFFFFFGGGGGHHHH[LF] 3行目 [EOF] -------------------------------------- [LF]=改行文字です。 [EOF]=ファイル終端指示子です。 上記のプログラムは、 1行20バイトある入力ファイルから一行だけgetするサブモジュールの一部です。 3回目にこれを実行した時に、EOFになってrtn_codeが'4'で返ってくる予定なのですが、どうしても非EOFになって'8'が返ってきてしまうのです。 なぜなんでしょうか? そもそも、どうなるとEOF指示子がfpに返ってくるのでしょう?

  • ファイル読み込み EOF 判定

    数字の羅列した単純なテキストファイルを読み込ませたいのですが、 以下のようにすると、途中で改行などで一行あけた場合、そこで読むのを ストップしてしまいます。 if (fgets(buf, sizeof(buf), fp) == NULL) { 改行にくじけることなく、ファイルの最後まで読み込ませるにはどうしたら いいのでしょうか。 ちなみに、以下のようにやると、   while(getc(fp) != EOF){ こんどは改行をものともせず、ファイルのお終いまで読んでくれるのですが、 2バイト文字(頭一文字が化ける)、のっけ一行目に数値(10桁)を置くと 一文字かけて9桁になってしまいます。 2行目以降はちゃんと10桁です。(一行目に改行をいれて、2行目以降に書くと大丈夫のようです。変) 簡単なようで、つまってます。どうかよろしくお願いします。

  • VBA 文字数の判定

    テキストファイルを1行ずつ読み取り、 100文字を超えている行のみ、新しいテキストファイルまたはexcel行に書き込んでいくという バッチを作成したいと思います。 以下でテキストファイルを1行ずつ読み取ることはできました。 1行ずつ読み取った行に対して、文字数以上の判定の方法を教えてください。 また100文字以上の場合は、別ファイルに書き込んでいく構文も教えていただけますか。 Sub test() Dim buf As String, n As Long Open "パス\a.txt" For Input As #1 Do Until EOF(1) Line Input #1, buf n = n + 1 Cells(n, 1) = buf Loop Close #1 End Sub

  • PHPでファイルポインタの移動

    現在。[EOF]になるまで1行読込んでは、ファイルポインタを移動させ すべての行を出力しています。 これをテキストの[EOF]よりも1行上のbbbbbbbbがある行(見た目上の最終行)のみを 出力したいのですがどうすればいですか? while(!feof($filepointer)){ $line = fgets($filepointer); print($line."<br />"); } ~log.txt~ aaaaaaaaaaaaa[改行コード] bbbbbbbbbbbbb[改行コード]←ココのみ取り出したい [EOF]

    • ベストアンサー
    • PHP
  • 途中にEOFがあるファイルの読込

    VB6でファイルを全行読み込んで任意の処理を行いたいのですが、そのファイルには 途中に文字コード 1a (つまりEOF)が入っている場合があります。 普通に Line Input で処理すると、その部分でファイル終了と判断し 読込を終えてしまいますが、その後のデータも読み込みたいのです。 どのようにすれば良いのでしょうか?

  • findstrで改行文字の検索

    sample.txtというファイルには通常のデータが入っており各行は改行されています。最後の行だけ改行ではなく[eof]が入っています。ファイルの中の改行されている行をすべて検索したいのですが MS-DOSのコマンドプロンプトで findstr /r \n sample.txt とやっても何も表示されません。\nを\r\nとしても同様です。 改行文字を検索するにはどうやるのでしょうか?

  • fgets関数のEOFの扱い方について

    fgets関数のEOFの扱い方って、 ファイルの終わり(EOF)を検出し、かつ配列に1文字も読み取れなかった場合、配列の内容を変化させずに残しNULLを返す。配列に1文字以上読み取れた場合、EOFをバッファに残し配列に'\0' を追加する。その後、EOFを読み取り終了。 であってますか?

  • EOFの書き込み Perl

    CGI初心者です。質問させてもらいます。 テキストファイルを読み書きモードでオープンします。 open(FILE, "+<test.txt"); 読み込みや書き込み作業をした後、 現在のファイルポインタの位置や、 seek FILE, 0, 0; などファイルの先頭で、 EOFを書き込めないのでしょうか? 例)print FILE 'EOFの文字'; Cでは出来たような気がしましたが・・ ファイルポインタの位置でファイルを終わらせる 簡単な方法ありましたら、お教え願います。m(__)m

    • ベストアンサー
    • CGI
  • EXCELのVBAでEOFを誤認識

    すみません、ファイルからデータを読み込んでいるのですが、変なコードが入っているらしく、EOFはきちんと認識できず、困っています。 文字コードも何かわからなず、半角空白でもないようです。読み込みファイルの2行目の"ー"と"&"の間にある見えない文字コードです。(さくらエディタでは半角空白に見えてます。) 何なのかも私にはわかりませんが解決方法をご教授願います。このコードを削除するば良いですが、大量にあり手動では削除困難です。 (出来れば以下のサンプルプログラムを修正する形で教えてもらえると助かります。) 簡単なVBAコードと読み込みファイルをお付けしますので、解決策をご教授方よろしくお願いします。 (以下のコードでも問題は発生します。) 添付ファイルが付けれないし、コードは変換されて表示されそうです。。。 その場合はどうやって調べれば良いかご教授頂ければと思います。 ----------VBAプログラム(Excel2007で作成)---------- Option Explicit Sub testLoadFile() Dim intFF As Integer ' FreeFile値 Dim lngREC As Long ' レコード件数カウンタ Dim strREC As String ' レコード領域 Dim opnFileName As String ' FreeFile値の取得(以降この値で入出力する) intFF = FreeFile ' 指定ファイルをOPEN(入力モード) opnFileName = ActiveWorkbook.Path & "\loadtest.txt" Open opnFileName For Input As #intFF lngREC = 0 ' ファイルのEOF(End of File)まで繰り返す Do Until EOF(intFF) ' レコード件数カウンタの加算 lngREC = lngREC + 1 ' 行単位にレコードを読み込む Line Input #intFF, strREC Cells(lngREC, 1).Value = strREC Loop ' 指定ファイルをCLOSE Close #intFF End Sub --------読み込みファイルテキスト(3行のファイルです。)------------ "aaa","3" "cccー&","4" "bbb","5"

  • 読込むtxtファイルについて

    CGIでtxtファイルからデータを読込んで、そのデータをHTMLでIFRAMEを使って表示させるようにしました。 一行だけを読込んで表示させるのですが、その読込む一行はtxtファイルでは改行もなく本当に一行で入力しているものをHTMLで表示させる時に改行したりできるのでしょうか?また、表示させる内容なんですが、HTMLのように文字のサイズを小さくしたり、色を変えたり、というのはできるのでしょうか? できるのであればその方法を教えて頂きたいです。 調べているのですが、なかなか見つからなくて。 よろしくお願いします。

    • ベストアンサー
    • CGI