テキストファイルの区切りが "|" の場合、読み込み方法は?

このQ&Aのポイント
  • テキストファイルをカンマ区切りとして読み込む方法はわかりますが、「|」区切りの場合はどうしたらいいですか?
  • テキストファイルを「|」区切りで読み込む方法が知りたいです。
  • 質問者はテキストファイルの区切りが「|」の場合、読み込み方法について教えてください。
回答を見る
  • ベストアンサー

テキストファイルの区切りが " | " の場合

テキストファイルの読み込みで質問したいのです。 下記のソースを書いた場合、カンマ区切りでファイルを 読み込み、変数に渡す事が出来ますが、それが"|"区切りだった場合は どのような形で書くべきでしょうか? FILE *in_file; char myName1[]; int myName2; in_file = fopen("test.dat","r"); fscanf(in_file,"%s,%d",myName1,&myName2); /*区切り文字:*/ printf("name1%s name2%d\n",myName1, myName2); fclose(in_file); 読込みたい情報に合わせて、ソースを下記のように変更しました。 fscanf(in_file,"%s|%d",myName1,&myName2); /*区切り文字:*/ テキストファイルの内容は、 ABC|123 です。 上記の条件だと、myName1に"ABC|123"となってしまいます。 カンマ区切りのソースに直して、データもカンマ区切りに直すと、 myName1=ABC myName2=123 となるのですが、"|"区切りは、初めてなのでうまく出来ないのです。

質問者が選んだベストアンサー

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

ちょっとあっさりし過ぎた回答だったので、一応、解説もしておきます。 参考URLに linux の日本語訳されたマニュアルを示しておきます。 そこの「変換」の章の s の部分を読んでください。今回のことに からむ部分を引用すると、   * * * 文字列の入力は、 ホワイトスペースまたは最大フィールド幅(ふ たつのうち最初に 生じたもの)によって中止される。   * * * ということです。 どの開発環境を使っているかによると思うのですが、大体同じ仕様 になってると思ってました。なので、"|" が "," でも期待通りの 動きをしないと思うのですが、senna13 さんがお使いの開発環境は カンマだけ、特別扱いしているようですね。

参考URL:
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/fscanf.3.html
senna13
質問者

お礼

ありがどうございました。 いやー、自分も長い事色々なプログラムをしていたのですが、 なにせ、現在の環境には、リファレンスって物がなくて・・・・ 本当にありがどうございます。 後は、全てクリア出来る問題ばかりなので、自分で処理します。

その他の回答 (1)

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

fscanf(in_file, "%[^|]|%d", myName1, &myName2); です。

関連するQ&A

  • CSVファイルをカンマ区切りのテキストファイルに直したい!

    CSVのエクセルファイルを文字化けすることなく、カンマ区切りのテキストファイルにしたいのですが、どうすればよろしいのでしょうか?

  • カンマ区切りでないテキストをcsvへ

    カンマ区切りしていないテキストファイルを一気にカンマ区切りしてcsvに変更することはできないのでしょうか?? 元のテキストファイルをワードパッドで開いてカンマ区切りし直して保存し、名前の変更でcsvに変更(拡張子が変更するとファイルが使用できなくなる可能性あり、というエラーは無視)したら読み込めるようにはなります。 しかしカンマ区切りし直すというのは面倒です。

  • csvファイルからの読み込みがスムーズにできません

    fscanfでCSVファイルから文字列を取り込み、カンマ区切りで4つの変数に文字列を代入しようと考えているのですが、出力されたcsvファイルが変わった区切りかたをしているのでうまく変数に代入できずに困っております。 例えば、出力されたcsvファイルは以下のようになっております "ABC CO.,I","4540",""STAR"","2010/03/31" 希望としては aにABC CO.,I bに4540 cにSTAR dに2010/03/31 をそれぞれ代入したいのですが aに入る文字列にはCO.,Iというようにカンマが既にありますので カンマ区切りで読み込むとめちゃくちゃになってしまいます ですので基準をダブルクオーテーションに置き、"と"の間の文字列を代入というような形が取れれば良いのですが、このような方法での文字列取得は可能でしょうか? c言語の勉強を始めて間もない為、低レベルな質問、表現であることをお許し下さい。 よろしくお願いします。

  • VBAでテキストファイルからデータを読み込む方法

    VBAでテキストファイルからデータを読み込む方法を探しています。 コンマ区切りのデータを、エクセルに書き込みたいです。 テキストファイルにはコンマ区切りで6個のデータを書き込んであります。 それを、セルD3からD7に書き込む方法を教えていただきたいです。よろしくお願いします。

  • エクセルのセル区切り位置をカンマにしてテキストファイルにする方法

    カンマ区切りでテキストファイルをエクセル表にしましたが、エクセルにて編集後、元通りカンマ区切りでテキストファイルにもどしたいのですが、どのようにすればいいのでしょうか? エクセルにエクスポートなどの言葉がみつけられなかったので、教えていただきたいです。 どうぞよろしくお願い致します。

  • EXCEL VBAでカンマ区切りテキストファイルに変換する方法

    EXCELで作成したシートをVBAでカンマ区切りテキストファイル(CSVファイルではなく)に変換する方法を教えてください 下記のプログラムではテキストファイルに変換されますが、カンマ区切りになりませんでした。 Sub Samp() ActiveWorkbook.SaveAs Filename:="C:\WINDOWS\aa.txt", FileFormat _ :=xlText, CreateBackup:=False End Sub

  • タブ区切りファイルからカンマ区切りファイルに変更する方法

    よろしくお願いします。 タブ区切りしてあるテキストファイルを、一気に カンマ区切りのファイルにする方法はありますでしょうか? どなたかご存知の方お教えください。

  • テキストファイルについて

    あるデータがカンマ区切りなのか、タブ区切りなのか、スペース区切りなのかはテキストファイルにしてメモ帳で開いて確認するしかないんでしょうか? 宜しくお願いします。

  • テキストファイルのデータ区切り文字(制御文字)について

    テキストファイルにデータを保存しているのですが、区切り文字タブ\tはフィールドの区切りに使っています。 その状態で、仮に1つのフィールドにデータを詰め込む場合、,(カンマ)で区切った場合にデータ自体に金額の,があった場合、誤動作します。フィールドの区切りはタブ\tは普通ですが、1つのフィールドに複数データを持たせる場合の区切り文字は\0など使っても問題ないのでしょうか? 環境はWindows, Linux両方で使います。\0を使ってそれが文字列の最後とまた誤動作しても嫌です。 皆さんは\t以外にテキストデータの区切りにどのような制御文字を使っていますか?ちなみに改行は1レコードの区切り文字です。

    • ベストアンサー
    • Perl
  • 【Access】パイプ区切りのテキストファイル

    パイプ(|)区切りのテキストファイル(.txt)をAccessのテーブルに自動で取り込みを行ないたいです。 パイプ区切りのファイルを取り扱うに当たり、前提としてパイプはカンマに置換した後、取り込みを行った方が良いのでしょうか。 また、テーブルへの取り込み方法で良い手段のある場合はご教示ください。 取り込み方法としては上に書いた通り自動で、VBAを組もうと思っています。ソースコードの組み方もやや苦戦中なので良いコードがあればご教示頂きたいです。 詳しい方、よろしくお願いいたします。 ※ファイルイメージ ファイル名:パイプ区切りファイル.txt HDR:あああ|いいい|ううう|えええ|おおお|かかか|ききき 明細1:明細1あ|明細1い|明細1う|明細1え|明細1お|明細1か|明細1き 明細2:明細2あ|明細2い||明細2え|明細2お||

専門家に質問してみよう