Filtr w funkcji scanf

0

Cześć!

Mam problem przy nauce C, z którym nie mogę sobie poradzić.
Potrzebuję przy użyciu funkcji scanf wczytać znaki z wejścia: akceptowane znaki muszą być dużą literą i mają zostać zapisane w tablicy jako osobne elementy. Problem w tym, że na wejściu może pojawić się wszystko, włącznie ze spacją. Niestety każde moje podejście kończy się albo błędem, albo wypełnieniem tablicy śmieciami. W jaki sposób powinno się prawidłowo wykonać taką operację?

0

Wczytujesz wszystko, a do tablicy docelowej wstawiasz tylko te znaki spełniające odpowiedni predykat. Przyda się funkcja isupper().

0

Dzięki, ale największy problem jest taki, że gdy wprowadzone dane są po spacji funkcja scanf działa tylko do momentu jej napotkania i nie bierze dalszych danych. Googlowałem filtrowanie przy pomocy funkcji scanf ale niestety gdy każę jej akceptować spację poprzez ciąg znaków scanf(%[^ ]", x); to tablica zostaje wypełniona śmieciami. Probówałem też odwoływać się do pojedynczych indeksów tablicy, czyli x[0], x[1] ... przy pomocy pętli for, ale efekt był podobny.

0

To wczytaj do innej tablicy, a z niej do docelowej. Albo wczytuj znak po znaku.

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