• ベストアンサー

文字列検索&分解の方法に関して

C言語初心者です。 現在、文字列の検索&分解のプログラムを作成しようとしているのですが、なかなかうまくいきません。 やりたいことは、カンマくぐりのCSV形式の文字列をカンマ毎に分解して出力させたいのです。 (例) 入力データ:"TEST1,TEST2,,TEST3" 出力結果: No1:TEST1 No2:TEST2 No3: No4:TEST3 カンマをstrchrにて検索したりしてはみましたが、うまく出力されないといった感じであります。 大変申し訳ございませんが、方法・ヒントを頂けるとうれしいです。 どうかよろしくお願いいたします。

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

  • ベストアンサー
回答No.1

配列内のデータがカンマになるまで別配列に読み込み(もしくは表示し)、カンマになったらまた次のカンマになるまで…と、char型変数一つづつ処理するつもりで試してみてください。 基本構文はこうなると思います。 while ( str[i] != NULL ){  if ( str[i] == ',' ){  }else{  }  i++ }

shin-emi
質問者

お礼

ご回答ありがとうございます。 なんとかできました。 1文字ずつ検索するのがミソですね。 大変ありがとうございました。

その他の回答 (3)

回答No.4

awkでよければ、 awk.exe '{gsub(/"/,"");n=split($0,a,",");for(i=1;i<=n;i++)print "No" i ":" a[i]}' 入力データ

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

やはり1文字ずつ調べるのが基本です。 strtokを使うと、フィールドが空の場合でも連続したコンマをすべて潰してしまいますし、二重引用符で囲まれたフィールドも正しく扱えません。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.2

strtok を使う。

関連するQ&A