2016-04-13 8 views
0
私は次のコードを持っている

Cでの入力、特殊なケース?

良い一日、:私は、動的にidに割り当てられました

43  while (TRUE) 
44  { 
45   printf("Swipe Card: "); 
46   scanf("%s;%s=%s", id, banner, cp); 
47   printf("%s\n%s\n%s\n", id, banner, cp); 
48   ProcessStudent(banner, file); 
49 
50  } 

bannerを、そしてcpは、しかし、私はちょうどチェックするために、私はなかったそれらを(印刷しようとすると、その内容)すべてが「id」にのみ取り込まれます。私が読もうとしている文字列は次のようになります。%GRE068?;01540594=000331!

+2

'を使用するには;'と '='空白ではありません。 – EOF

+0

本当に、私の悪い。それを私が直した。使用された 'scanf("%[^;]%[^ =]%[^ \ n] "、id、banner、cp);代わりに 'ありがとう。 – ricknaght

答えて

3

フォーマット文字列のフルパターンマッチを行おうとしません。 %s入力形式は、次の空白(またはEOF)まですべてを読み込みます。その後、;が検索され、他の入力を解析しないことがわかりません。

あなたには、いくつかの他の文字で停止したい場合は、[^char]

scanf("[^;];%[^=]=%s", id, banner, cp);