アプリ版:「スタンプのみでお礼する」機能のリリースについて

テキストファイルの読み込みで質問したいのです。
下記のソースを書いた場合、カンマ区切りでファイルを
読み込み、変数に渡す事が出来ますが、それが"|"区切りだった場合は
どのような形で書くべきでしょうか?

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 回答 (2件)

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



です。
    • good
    • 0

ちょっとあっさりし過ぎた回答だったので、一応、解説もしておきます。



参考URLに linux の日本語訳されたマニュアルを示しておきます。
そこの「変換」の章の s の部分を読んでください。今回のことに
からむ部分を引用すると、

  * * *

文字列の入力は、 ホワイトスペースまたは最大フィールド幅(ふ
たつのうち最初に 生じたもの)によって中止される。

  * * *

ということです。

どの開発環境を使っているかによると思うのですが、大体同じ仕様
になってると思ってました。なので、"|" が "," でも期待通りの
動きをしないと思うのですが、senna13 さんがお使いの開発環境は
カンマだけ、特別扱いしているようですね。

参考URL:http://www.linux.or.jp/JM/html/LDP_man-pages/man …
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/04/23 16:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!