• ベストアンサー

特定の文字列をcsvから探して、その文字列を含む行を読み込むには?

例えば以下のようなcsvファイルがあったとします。 ab1,ef2,ab3,af4,ab5 bb1,bf2,bb3,bf4 cb1,cf2,cb3,cf4,cb5 zb1,zf2,zb3,zf4,zb5 プログラムに"cb3"という文字列を探させて、その文字列を含む一行 "cb1,cf2,cb3,cf4,cb5"のみを読み込む方法を探しております。 何か良い方法がございましたら教えていただけませんでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

http://oshiete1.goo.ne.jp/qa5709184.html でやった、fgets + sscanf を使うもう一つの利点は、同じ行に対して複数の処理を行うときに楽、ということです。 文字列の中にある文字列が含まれているか調べるには、strstr関数を使用するか、同等の処理を自作します。 strstrを使用する場合は、#include <string.h>を追加してください。 探す文字列が日本語の場合は、文字コードにも注意してください。 実際の例としては、前回のプログラムに下の+で始まっている行を追加してみてください while( fgets( buf,600, fp ) != NULL ) { +/* "cb3"が含まれていなかったら、次のループへ */ + if ( strstr( buf, "cb3" ) == NULL ) { + cotinue ; + } ret = sscanf( buf, " %[^,],%[^,],%[^,],%[^,],%s", s, n1,n2,f1,f2 ) ;

master817199
質問者

お礼

kmeeさん いつも丁寧なご回答ありがとうございます strstrでヒットすれば読み込み、 ヒットしなければ続ければ良いのですね 今すぐ実践致します! ありがとうございました。

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.2

1行読み込み http://msdn.microsoft.com/ja-jp/library/c37dh6kf.aspx 文字列から特定の文字列を検索 http://msdn.microsoft.com/ja-jp/library/z9da80kz(VS.80).aspx これを組み合わせれば出来るでしょう。

master817199
質問者

お礼

解説ページの紹介ありがとうございます。 とても便利ですので是非参考にさせていただきます。 本当にありがとうございました。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>何か良い方法がございましたら教えていただけませんでしょうか? INPUT文を使って一行ずつ読み込んで、文字をチェックしてセルに展開という方法で読み込ませる事が出来ます。

master817199
質問者

お礼

そういう方法もあるのですね。 是非参考にさせていただきます。 貴重なアドバイスに感謝します。

関連するQ&A