- 締切済み
CSV 指定列 文字列 C言語
失礼します、C言語である文字列が入っている行だけを読み込みたいのですが、どのような考え方で可能でしょうか? 例 XXX,YYYY,OOOO TTT,LLLL,KKKK,GGGG,DDD MMM,WWWW,AAAA 例えば1行づつ読み込んだ時にLLLLが入っていれば その行のKKKK~DDD 改行が入るまで読み込みたいです。 よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- titokani
- ベストアンサー率19% (341/1726)
何度も言われていますが、文字列について理解ができていません。 中級の本を読んで苦労しているようですが、初心者向けの入門の本の、文字列のところを熟読してください。 そこが理解できれば、あとは早いと思います。
- trapezium
- ベストアンサー率62% (276/442)
> while (fgets(pwl.p[0],300,fp) != EOF) { 比較するなら EOF じゃなく NULL fgets() の return value は char * サンプルコードとしては char buf[300], *sp, *tp; while (fgets(sp = buf, sizeof(buf), fp)) { while ((tp = strsep(&sp, ",\n"))) { if (!strcmp(tp, "LLLL")) printf("%s\n", sp); } } あとは必要なら , separete 続けるか、適切に strcpy() など。
- f272
- ベストアンサー率46% (8469/18132)
ある文字列が入っている行だけを読むのはむりです。 とにかくすべてを順に読んで,条件に当てはまるもの以外は捨ててください。
- maiko0333
- ベストアンサー率19% (839/4401)
1行づつ読み込む。 その行を1桁目から見ていき、Lが4つあることを確かめる。 あればその行(すでに読み込んでいますから)の最後までが範囲となります。
お礼
ありがとうございます。 すべて読み込んでからということですね 現在カンマ区切りで入れるときに処理を分けようかと思っていました。 while (fgets(pwl.p[0],300,fp) != EOF) { i++; pwl.p[1] = strtok(pwl.p[0], ","); if(条件){ 処理内容} }