Scanf i dwie zmienne

0

Witam,
Potrzebuje pomocy w rozwiązaniu:
Muszę pobrać od użytkownika jakaś frazę, która zazwyczaj ma wzór X Y
(gdzie X to jakieś słowo, oddzielone spacją od Y, a i Y to zbiór słów także oddzielone spacjami.Przykład: słowogłówne slowo1 slowo2). słowogłówne miało by się znaleźć w zmiennej X, a cała reszta miała by się znaleźć w zmiennej y w niezmienionej formie.
Niestety są przypadki gdzie mamy tylko jedno słowo do wpisania.

Program pisany w C.

Chwilowym rozwiązaniem było

scanf("%s%s", x,y);

Działa tylko w przypadku, kiedy wpisuje dwa słowa oddzielone spacją. Nie wiem jak uciąć od razu po spacji (ale tylko po pierwszej spacji) i wrzucić to do jednej zmiennej a całą resztę do drugiej.

3
scanf("%s %[^\n]", x, y);
0
0x666 napisał(a):
scanf("%s %[^\n]", x, y);

Super dzięki, to jest prawie to czego szukałem. Rozwiązuje jeden z dwóch problemów. Teraz został jeszcze przypadek gdy użytkownik wpisuje: słowo1 i klika enter, wymusza żeby wpisać mu coś jeszcze. Da się to jakoś ominąć gdy kliknę enter to nie będzie już żądać ode mnie wpisu?

1

Przeczytaj całą linię do bufora i użyj strtok czy nawet pętli z isspace.

0

Niestety robiłem już strtok ale, nie przynosi upragnionego rezultatu. Bo dzieli według spacji, cały ciąg , na poszczególne, że tak powiem szuflady, a ja chciałbym mieć tak jak z tym: scanf("%s %[^\n]", x, y); , tylko jeszcze żeby zignorował drugą zmienną jak wcisnę enter :(
Ciężko wyjaśnić o co mi chodzi.

1

No to użyj pętli i znajdź pierwszy biały znak, będziesz miał miejsce podziału na słowo i resztę.

0

strtok

Z tym to ostrożnie, modyfikuje wejściowy string, nie jest thread-safe, nie może być używana z const stringami.

0
0x666 napisał(a):

Przeczytaj całą linię do bufora i użyj strtok czy nawet pętli z isspace.

Dzięki wielkie. Znalazłem pierwszą spację puszczając w pętli isspace. Następnie podzieliłem pierwszy ciąg od początku do miejsca spacji, a potem drugi od spacji do końca. I działa, dzięki Wielkie za pomoc.

Można zamknąć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1