• ベストアンサー

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しか格納できませんでした。 (条件) " "かつ,で区切られた部分をパラメタに格納する。 " "内には、空白や,が入る。

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

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.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; }

yasu1
質問者

お礼

どうもありがとうございました。 昨日、丸1日悩んでしまいました。 おかげさまで、うまくいきました。 今回はじめて「教えて!goo」で質問をしました。 a-kuma さまには、本当に感謝です。

関連するQ&A