- ベストアンサー
C言語のsscanf関数の上手な使い方
C言語で、 char buf[256]; char c1[10],c2[10],c3[10]; sscanf(buf,"%s%s%s",c1,c2,c3) という、バッファから文字列を読み取るとき、 bufが、 "aa bb","aa,bb","aa, bb"の場合に、 c1 = "aa bb" c2 = "aa,bb" c3 = "aa, bb" が入るようにする方法をご存知でしたら教えてください。 %[^\"]sを使ってみたのですが、c1しか格納できませんでした。 (条件) " "かつ,で区切られた部分をパラメタに格納する。 " "内には、空白や,が入る。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じ。 #include <stdio.h> int main(void) { char buf[256] = "\"aa bb\",\"aa,bb\",\"aa, bb\""; char c1[10], c2[10], c3[10]; printf("%s\n", buf); sscanf(buf, "\"%[^\"]\",\"%[^\"]\",\"%[^\"]\"", c1, c2, c3); printf("c1=%s\n", c1); printf("c2=%s\n", c2); printf("c3=%s\n", c3); return 0; }
お礼
どうもありがとうございました。 昨日、丸1日悩んでしまいました。 おかげさまで、うまくいきました。 今回はじめて「教えて!goo」で質問をしました。 a-kuma さまには、本当に感謝です。