2017-03-22 24 views
0
unsigned short octet2, octet3, octet4; 
sscanf(ipAddr.c_str(), "%hu.%hu.%hu.%hu", &octet2, &octet2, &octet3, &octet4); 

ipAddrは文字列です。IPアドレスをオクテットに分割するが、sscanfを使用して最初のオクテットをスキップする

上記のコードから、オクテットを正常に破棄しています。しかし、私はちょうどIPアドレスの最初のオクテットに触れないようにしたいと思います。私はoctet2に2回書き込むという余分な操作を避けたい。

たとえば、IPアドレス1.2.3.4で、私がない限り、百万回以上行われます。1.

マイ操作を触れることなく、2に続いた後、3、4のIPアドレスを破るだろうsscanfよりも優れた方法がありますので教えてください。

+0

はあなたを持っていますこのsscanf(ipAddr.c_str()、 "%* hu。%hu。%hu。%hu"、&octet2、&octet2、&octet3、&octet4)を試しました; *は値を読み取った後に無視されます –

+1

問題? –

+0

問題は '%'の代わりに '&'です... –

答えて

3

あなたがフィールドを保存する(そしてあなたが唯一その場合には3つのパラメータを必要とする)解析ではなく、するsscanfを伝えるために*することにより、第1のフォーマット指定子を付けることによって、最初の引数を保存スキャンしたができませんでした:

sscanf(ipAddr.c_str(), "%*hu.%hu.%hu.%hu", &octet2, &octet3, &octet4); 
関連する問題