開発環境はVC++6.0SP6適用、Win2000です。
今回、文字列に192.168.1.1というIPが入っていてそれをsscanfにてそれぞれの要素に分割し
たいのですがうまくいきません。
char ip1[4];
char ip2[4];
char ip3[4];
char ip4[4];
strcpy(tmpStr,192.168.1.1);
sscanf(tmpStr,%s.%s.%s.%s,ip1,ip2,ip3,ip4);
sscanfについては前前から、半角スペース区切りはうまくいっていたのですがそれ以外ではよ
く躓いています。
次のドットまでを読むという風にしていく方法はありますが、sscanfでぱっととる方法がある
ようなら教えていただけませんか?
一応自分なりにK&Rなど参考に考えてみたところ[]や~あたりを駆使すれば・・・と思い色々してみ
ましたがダメでした。
scanfで読み取ることが条件ですか?
strtok使って'.'で区切る方がずっと楽ではないかと。
(s)scanf で読みたいならこんな感じ。
int ip[4];
int n=sscanf(192.168.123.45, %d.%d.%d.%d, ip+0, ip+1, ip+2, ip+3);
char is[4][4];
int m=sscanf(192.168.123.45, %[^.].%[^.].%[^.].%[^.], is+0, is+1, is+2,
is+3);
is の文字数のオーバーフローチェックは故意に行っていません。宿題ということで。
# 4個目の %[^.] が適切かどうかは疑問の残るところでしょう。
お返事ありがとうございます。
ちょうど今日の昼に調べていてstrtokを発見しさっそくやってみようとしていたところでし
た。
またScanfですが成功しました!
[]と^つかってできたはずだけどどうすればいいんだろうと色々探してて結局わからずじまいだ
ったのでとても疑問が晴れすっきりしました。
本当にありがとうございます!