2010-10-20 17 views
5

Chcę przeczytać ciąg i przeanalizować go za pomocą sscanf. Chociaż nie chcę czytać w żadnym miejscu na początku.sscanf pomiń białą przestrzeń na początku

Przykładowy ciąg znaków.

@a Bear Tiger 

sscanf(strLine, "@%1s %64s %64s", dir, name1, name2); 

Mam to.

Problem jest wtedy, gdy linia idzie w jak powiedzieć

 @a Bear Tiger 

Powinno być:

@a Bear Tiger 

że będzie chciał czytać w przestrzeniach do znaku @. Jak mogę pominąć białą przestrzeń i odczytać z znaku @.

Dzięki.

+0

+1 za użycie poprawnych specyfikatorów szerokości pola w ciągu znaków 'scanf'. –

Odpowiedz

12
sscanf(strLine, " @%1s %64s %64s", dir, name1, name2); 

Jest to konieczne, ponieważ scanf przeskakuje tylko spacje dla (większości) specyfikacji konwersji. Ale @ jest "zwykłą postacią", a nie specyfikacją konwersji, więc nie ma żadnego pominięcia. Jednak dodanie białych znaków do łańcucha formatów wymusza pominięcie wprowadzanych białych znaków.

+0

+1, które powinno zadziałać. Zastanawiałeś się, dlaczego usunąłeś odpowiedź. – codaddict

+0

@coda, zgadywałem drugą odpowiedź z powodu podanego w dwóch usuniętych odpowiedziach. 'scanf' * robi * pomija spacje w specyfikacjach. Jednak rozgryzłem to rozróżnienie. –

+0

Dziwne, myślałem, że próbowałem tego. Dzięki! – Matt

Powiązane problemy