Ignorovat prázdná místa ve formátu scanf

hlasů
-1

Četl jsem vstup používat scanfv daném formátu:

scanf(<%d;%d>%c, &lo, &hi, &op);

To přijímá nějaký řetězec ve tvaru <1;10>k. Tato metoda funguje, když jsem zadat přesně v tom syntaxi, ale to nefunguje těchto znaků, takže například to nebude fungovat:

    <      1 ;
3 >      
 k

Tak jak mám udělat scanfignorovat tyto bílé znaky?

Položena 07/11/2018 v 23:39
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
4

Dát mezery před doslovných postav ve formátu řetězec pro scanf(). Nemáte skutečně potřebují mezery před většině %specifikací konverze ( %c, %na %[…]jsou výjimky, že není přeskočit bílé místo), ale stejně tak mohou být pro symetrií (nepoškozují). Proto:

if (scanf(" < %d ; %d > %c", &lo, &hi, &op) == 3)
    …all OK — at least, three values were read OK…

Pokud jste byli spárování %symbol vstupu, měli byste používat %%ve formátu řetězce; že budete přeskočit vedoucí prázdné místo příliš.

Odpovězeno 08/11/2018 v 00:52
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more