scanf i AVRGCC

Dec 29, 2004 6 Replies

Witam,



ostatnio bawi³em siê powy¿sz± f-cj± na ATMEGA128. I odkry³em dziwn± przypad³o¶æ, mianowicie: gdy próbowa³em odczytaæ liczbê dziesiêtn± (lub hex - nie ma znaczenia) tj. jak wprowadza³em znaki z zakresu tj. 0-9 lub



0-F,to wszystko by³o ok; ale je¿eli wprowadzi³em znak z poza powy¿szego zakresu to procesor wychodzi³ z funkcji i odt±d ju¿ j± "ignorowa³" tzn. zachowywa³ siê tak, jak by jej nie by³o. Dopiero pomaga³ reset, i znowu wszystko by³o ok do momentu wprowadzenia znaku z poza zakresu. IMHO powinno tak byæ , ¿e je¿eli przyjdzie "taki" znak to scanf zwraca EOF (-1) i tyle.

while(9){ ui_temp1 = scanf( "%x",&ui_temp) ; printf("key_char=%x",ui_temp); } Dodam, ¿e ze stringami jest wszystko Ok.



No nie mam ju¿ koncepcji co jest nie tak. Mo¿e kto¶ to ju¿ przerabia³.



Pozdrawiam Mister



To jest feature a nie wada :-)

scanf czyta znaki do momentu poki mu sie podobaja, ale jak trafi na zly, to konczy operacje, a znak zwraca do bufora, zeby nastepny scanf mogl odczytac bez gubienia znakow. Musisz odczytac jeden znak i go wyrzucic.

Tako rzecze standard.

J.

Wielkie dziêki, nawet spodziewa³em siê takiego zachowania licz±c ca³y czas, ¿e scanf zwróci EOF (-1) a nie zero :-(

Mister

scanf zwraca EOF na koncu pliku - (o ile konsola moze miec EOF). Normalnie zwraca _liczbe_ poprawnie wczytanych pol (tych z %).

0 oznacza ze nic nie wczytalo, ale plik sie nie skonczyl.

Krzysiek Rudnik

a tak przy okazji zapytam: czy istnieje np. w AVRGCC trochê bardziej rozbudowana funkcja ani¿eli scanf, chodzi o mo¿liwo¶æ wprowadzania stringa, ale z mo¿liwo¶ci± u¿ycia klawiszy: Esc,Insert, Delete, kursorów itp. i akceptacja wprowadzanego tekstu za pomoc± Enter?

Pozdrawiam Mister

To nie bascom :-)

Pod unixa to sie i znajdzie, ale pod nieokreslony wyswietlacz, klawiature - to nie ma ..

J.

Mozliwosci edycji nie sa zadaniem funkcji C tylko handlera konsoli - w typowych systemach najpierw system dogaduje sie z uzytkownikiem (wtedy mozna edytowac), jak user nacisnie Enter system przekazuje linie tekstu do programu i dopiero wtedy program moze to przeczytac.

Krzysiek Rudnik

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required