ultra Temat założony przez niniejszego użytkownika |
Wczytywanie komend z poziomu konsoli » 2017-03-22 09:15:13 Cześć, Mam pytanie, w jaki sposób najlepiej zrobić wczytywanie komend z poziomu konsoli? Teraz mam to zrobione za pomocą tablicy znaków, przechwytuję znak po znaku i wywołuję polecenia. Niestety, nie działa to prawidłowo ponieważ: 1. jeśli chcę wczytać liczbę, to rozbija mi to na znaki 2. czasami jest tak, że jest podana liczba, a następnie komenda. teraz mam zrobione w ten sposób, że jak wczyta liczbę to wykona akcję, a powinno jeszcze sprawdzić jakie jest polecenie. polecenie może być po jednej lub dwóch liczbach. np: - 21 z - zdejmij 21 z stosu - 10 2 z - zdejmij 10 i 2 z stosu int main() { char * komenda = new char[ 10 ]; Stosik * stack; stack = NULL; while( scanf_s( " %c", komenda ) ) { if( * komenda >= 48 && * komenda <= 57 ) { push( stack, * komenda ); } if( * komenda == 112 ) { pop( stack ); } } delete komenda; return 0; }
|
|
maly7 |
» 2017-03-22 17:36:16 Wczytuj zawsze jako liczbę i sprawdzaj czy wczytało prawidłowo, jeśli nie znaczy, że wczytało znak. Przykład: int i = 0; char c = 0; printf( "Podaj liczbe lub komende: " ); if( scanf( "%d", & i ) ) printf( "Wczytano liczbe %d\n", i ); else if( scanf( "%c", & c ) ) printf( "Wczytano znak %c\n", c ); |
|
pekfos |
» 2017-03-22 18:23:04 jak wczyta liczbę to wykona akcję, a powinno jeszcze sprawdzić jakie jest polecenie. polecenie może być po jednej lub dwóch liczbach. np: - 21 z - zdejmij 21 z stosu - 10 2 z - zdejmij 10 i 2 z stosu |
Jeśli wiesz, co zdejmiesz ze stosu, to po co ten stos? |
|
1aam2am1 |
» 2017-03-22 20:28:44 Wczytuję całą linię, podziel ją (informacje rozdzielone spacja) i zostaje kwestia tylko przetworzenia informacji. |
|
ultra Temat założony przez niniejszego użytkownika |
» 2017-03-22 20:49:40 @maly7, to się raczej nie sprawdzi, muszę sprawdzać w while, cze jest wprowadzane polecenie
@pekfos, muszę to zrobić na stosie, takie życie, co poradzić :(
@1aam2am1, Ok, czyli kumam, że mam skorzystać z fgets. Pytanie brzmi, w jaki sposób mam podzielić tego stringa? Całość zapisywać do tablicy charów? |
|
1aam2am1 |
» 2017-03-22 22:22:29 Wszystko zależy co chcesz zrobić. Jeżeli wiesz że na samym końcu masz komendę. Wyszukaj od końca spacje. Wczytaj komendę i po kolei od początku do komendy masz swoje dane. Co komenda ma z nimi zrobić to piszesz w komendzie. Możesz powtarzać komendę dla następnych składników np. liczb lub coś innego. Wszystko zależy od implementacji.
PS. Poczytaj o strtok |
|
ultra Temat założony przez niniejszego użytkownika |
» 2017-03-23 08:48:55 @1aam2am1, o dzięki, coś takiego szukałem. wczytywanie komendy znakowej zrobiłem za pomocą strcmp, wydaje mi się, że jest to bardziej oszczędne pamięciowo i wydajne. |
|
« 1 » |