2016-04-13 46 views
0
Aşağıdaki kodu var

C girişi, özel durum?

İyi günler: Dinamik id tahsis ettik

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 ve cp, ancak ben sadece kontrol etmek ı did hangi onları (yazdırmaya çalıştığınızda onların içeriği) her şey sadece 'id' içine alınır. Okumayı denediğim dizi, bu %GRE068?;01540594=000331!

+2

' [^char] kullanın. – EOF

+0

Doğru, benim kötü. Onardım. Scanf ("% [^;]% [^ =]% [^ \ n]", id, banner, cp); Bunun yerine '. Teşekkürler. – ricknaght

cevap

3

scanf, biçim dizgisinin tam kalıp eşleşmesini yapmaya çalışmaz. %s giriş biçimi, bir sonraki boşluk (veya EOF) değerine kadar her şeyi okur. Bundan sonra, bir ; arar ve diğer girdilerden hiçbirini ayrılmadığını bulamadığı için. = `Boşluk değildir` `ve;

bazı başka karakterde durdurmak istiyorsanız

,

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