これはsscanf usage - how to verify a completed scan vs an aborted scanに関連していますが、それはその問題でカバーされていない縁です。sscanfの末尾のテキストに一致していますか?
char entry[] = "V2X_3_accepted";
int d1,d2,ret1,ret2;
ret1 = sscanf(entry,"V2X_%d_expected",&d1);
ret2 = sscanf(entry,"V2X_%d_received",&d2);
予想される結果:ret1==0; ret2==0; d1, d2
は未定義です。
実際の結果:ret1==1; ret2==1; d1=d2=3
。
最後に%n
を使用すると、一致する文字列が同じ長さになるので、助けになりません。連続したstrncmpなどを実行せずに、後続のテキストと一致する素敵なトリックがありますか?
@ user3121023:ニース!答えとして投稿してください。 –