• 締切済み

ファイル読み込み処理  ???

1,a,aa,12 2,b,bb,13 3,c,cc,14 4,d,dd,15 5,e,ee,ff 上のようなファイル内容を 読み込込んで 1,a,aa,12 2,b,bb,13 3,c,cc,14 4,d,dd,15 5,e,ee,ff  ように表示したいです。 4行目が空欄ですので4行目を飛ばして読み込んで表じしたいです。 どこを修正すればいいですか? #include <stdio.h> #include <string.h> int main(void) { FILE *fp1; char string[128]; /* 文字列を読み込む配列 */ /* ファイルを開けなかったら */ if ((fp1 = fopen("test.txt", "r")) == NULL) { fprintf(stderr, "ファイルを開けません!\n"); return -1; } /* ファイルから失敗するまで行単位で文字を読み込み */ while ((fgets(string, 128, fp1)) != NULL) { string[strlen(string) - 1] = '\0'; /* 余分な改行コードを削除 */ puts(string); /*読み込んだ行を表示 */ } fclose(fp1); /* ファイルを閉じる */ }

  • win09
  • お礼率28% (4/14)

みんなの回答

  • asuncion
  • ベストアンサー率33% (2126/6286)
回答No.2

#1です。 さっきのロジックを組み込むのは >string[strlen(string) - 1] = '\0'; /* 余分な改行コードを削除 */ の前です。もし、後ろに組み込むならば、 「配列の先頭要素が'\0'でないときだけ、出力する」となります。

  • asuncion
  • ベストアンサー率33% (2126/6286)
回答No.1

>4行目が空欄です これが、4行目の先頭文字が改行(\n)であることと同値であるなら、 「配列の先頭要素が'\n'でないときだけ、出力する」というロジックを 追加すればいいと思います。

win09
質問者

お礼

解決しました。 ご回答ありがとうございました。

win09
質問者

補足

ズバリ処理内容教えていただけませんでしょうか? お願いします!!

関連するQ&A

  • C#でのリストへの変数の格納

    namespace HtmlCreater { public partial class Form1 : Form { public Form1() { InitializeComponent(); } string aa = "xxx"; string bb = "xxx"; string cc = "xxx"; string dd = "xxx"; string ee = "xxx"; //リスト作成 ArrayList list = new ArrayList(); フォーム作成 aaForm form = new aaForm(aa, bb, cc, dd, ee); list.Add(form); string firstItem = (string)list[0]; Console.WriteLine(firstItem); } class aaForm(string aa, string bb, string cc, string dd, string ee) { String a = "aa"; String b = "bb"; String c = "cc"; String d = "dd"; String e = "ee"; } } } 以上のようなプログラムを使って、リスト list に変数aa,bb,cc,dd,eeを格納したいと考えています。 が、コンパイルすると以下のようなエラーメッセージが表示されます。 識別子が必要です。キー ワードは 'string' です。 無効なトークン '(' が クラス、構造体またはインターフェイスのメンバ宣言で使用されています。 波線はString a = "aa" String b = "bb" String c = "cc" String d = "dd" String e = "ee"にかかっています。 ここで必要な識別子とはなんでしょか?また、その他おかしいところはあるのでしょうか? ご存知の方がいたらご教授宜しくお願いします。

  • Excelで行を切り貼りをすると上書きされてしまうのでしょうか?

    5行ある下2行を切り取って、1行目に移動したいのですが、 AA BB CC DD EE ↓こうならず、 DD EE AA BB CC ↓こうなります。 DD EE CC 上書きされるようです。 行のコピー&ペーストは挿入されないのでしょうか?

  • VBAでCSVファイルを分割したい

    VBAを利用して、あるCSVファイルを一定のレコード数ごとに新しいファイルにファイル分割したいです。 やりたいことは、以下のようなイメージです。 関連サイトなどを参考に自分なりに取り組んでみましたが、なかなかうまくいきません。 VBAでなくても実現できそうですが、ここまでやったので勉強のためにもVBAでやりたいです。 サンプルコードなど教えていただけるとうれしいです。 ヒントでも結構ですので、よろしくおねがいします。 (2レコードずつ分割する例) sample.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4 aaa@aa.aa,123,あいうえ,111-111 bbb@bb.bb,456,かきくけ,222-222 ccc@cc.cc,789,さしすせ,333-333 ddd@dd.dd,012,たちつて,444-444 eee@ee.ee,345,なにぬね,555-555 fff@ff.ff,678,たちつて,666-666 ↓↓↓ ☆sample_1.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4   →各ファイルにヘッダも入れたいです。 aaa@aa.aa,123,あいうえ,111-111 bbb@bb.bb,456,かきくけ,222-222 ☆sample_2.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4 ccc@cc.cc,789,さしすせ,333-333 ddd@dd.dd,012,たちつて,444-444 ☆sample_3.csv ヘッダ1,ヘッダ2,ヘッダ3,ヘッダ4 eee@ee.ee,345,なにぬね,555-555 fff@ff.ff,678,たちつて,666-666

  • Google Chromeの同期について

    パソコンを2台使っていて、両方とも全く同じブックマークだった場合に同期をしたらブックマークは重複してしまうのでしょうか? PC1:A,B,C,D,E PC2:A,B,C,D,E を同期したら PC1:AA,BB,CC,DD,EE PC2:AA,BB,CC,DD,EE となりますか?

  • DBI、joinsした時の、出力構造について

    先日、 joinした際、同じidのものは 纏まってくれたらハッピーだと考えました。 あれそれ動かしてきたのですが、出力結果でゴニョゴニョ行うのではなく、 一発で 目的の出力結果にならないものでしょうか。 よろしくお願いします。 テーブル1 a___b___c_ 1___BB__CC 2___BB__CC 3___BB__CC テーブル2 d___e___f D___E___1 D___E___2 D___E___2 結合テーブル a___b___c___d___e___f 1___BB__CC__DD__EE__1 2___BB__CC__DD__EE__2 2___BB__CC__DD__EE__2 3___BB__CC__ 出力結果 $VAR1_=_[ __________{ ____________'a'_=>_1, ____________'b'_=>_BB, ____________'c'_=>_CC, ____________'d'_=>_DD, ____________'e'_=>_EE, ____________'f'_=>_1, __________}, ____________[ ______________{ ________________'a'_=>_2, ________________'b'_=>_BB, ________________'c'_=>_CC, ________________'d'_=>_DD, ________________'e'_=>_EE, ________________'f'_=>_2, ______________}, ______________{ ________________'a'_=>_2, ________________'b'_=>_BB, ________________'c'_=>_CC, ________________'d'_=>_DD, ________________'e'_=>_EE, ________________'f'_=>_2, ______________}, ____________] __________,{ ____________'a'_=>_1, ____________'b'_=>_BB, ____________'c'_=>_CC, ____________'d'_=>_, ____________'e'_=>_, ____________'f'_=>_, ___________}, よろしくお願いします。

    • ベストアンサー
    • Perl
  • Excel2003で他の列のデータをドロップダウンリストに

    質問のし直しです。 下記の場合、B列でのドロップダウンリストに(aa bb cc dd ee)と表示させるには、どうしたら良いのでしょうか? A列  B列 bb     dd aa     ee bb     ee cc    dd aa bb 実際には文字列なのですが、1300行で、A列のデータは300個位在ります。 宜しくお願い致します。

  • ファイルから文字列を読み出して16進数に変換

    test1.txtというファイルから文字列を読み出して16進数に変換、という処理をしたいのですがうまくいきません。どこがどう悪いのでしょうか?ご教授のほどお願いします。 ---------------------- #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { FILE *fp; char *fname = "test1.txt"; char str[100]; int num; fp = fopen( fname, "r" ); if( fp == NULL ){ printf( "%s is not open.\n", fname ); return -1; } while( fgets(str, 100, fp ) != NULL ){ num = strtol(str, NULL, 16); printf( "%s", str ); printf("%x\n", num); //ここでうまく出力されません } fclose( fp ); return 0; } ---------------- ちなみに、test1.txtの中身は以下のようになってます。 44DB4147E6075A92E878EB68C44DD51F 5DCE86622D846BF272215A792AF31A3E 46FF69A29D3DF1D4842461B239256C26

  • サーバー保存先変更に伴うショートカットのリンク先変

    組織替えによりサーバー保存先が変わりました。 これによりフォルダーに保存されているショートカットのリンク先を変更する必要となりました。 ネット検索してもこれと言う例題が見つからなかったため、ご教示いただければと思います。 変更前共有サーバー: \\AA\BB\CC\DD\EE\・・・・ 変更後共有サーバー: \\AA\FF1\FF2\FF3\DD\EE\・・・・ 変更したいことは、変更前の\\AA¥BB\CCのところを\\AA¥FF1\FF2\FF3に変更する。 \DD以降は変更なし。 1、 フォルダー内に作成したExcelファイルを保存しマクロを実行して変更する。 (デスクトップ内・サーバー内に使用) 2、 フォルダー内のlnkファイルのみを対象(数個あるとする) 3、 シートのセルD3に変更前のリンク先 \\AA\BB\CCを入力 シートのセルD5に変更する \\AA\FF1\FF2\FF3を入力する。 (汎用性を持たせるために、セルD3・D5を変更すると他部署にも使用可能) 4、 ショートカットのリンク先先頭が,” \\AA\BB\CC“であれば\\AA\FF1\FF2\FF3に書き換える (¥DD以降は変わらない) 5、 現在のフォルダー内だけか、下層フォルダーも変更するか Yes/Noで選択できるようにする。 6、 ショートカットのファイル名は変更しない。 以上ですが宜しくお願いします。 ちなみに自分が作るマクロでは変数を日本語で宣言しています。 Fn ⇒ ファイル名 何か問題があるでしょうか?

  • 【Access】SQL文教えてください!

    基本的な質問かもしれませんが・・・ テーブル名:test フィールド名:aa,bb,cc,dd,ee,ff (すべて数値型) aa~ccの合計からdd~ffの合計までの間を抽出したいのです。 どう書けばいいんでしょう?

  • excel データ抽出方法

    こんいちは 列1と列2を比べて条件が一致したデータを抽出したいのですが,方法がわかりません。どなたかご存知のかた教えていただけないでしょうか? 列1  列2 aa   vv bb   dd cc   ff dd   aa ee   bb この場合aa,bb が一致する。