RTV forum PL | NewsGroups PL

scanf i AVRGCC

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - scanf i AVRGCC

Mister
Guest

Wed Dec 29, 2004 9:30 pm   



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

J.F.
Guest

Wed Dec 29, 2004 10:55 pm   



On Wed, 29 Dec 2004 22:30:19 +0100, Mister wrote:
Quote:
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ł.

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.

Mister
Guest

Thu Dec 30, 2004 8:43 pm   



Quote:
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.

Wielkie dzięki,
nawet spodziewałem się takiego zachowania licząc cały czas, że scanf zwróci
EOF (-1) a nie zero :-(

Mister

Krzysztof Rudnik
Guest

Thu Dec 30, 2004 8:48 pm   



Mister wrote:

Quote:
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.

Wielkie dzięki,
nawet spodziewałem się takiego zachowania licząc cały czas, że scanf
zwróci
EOF (-1) a nie zero Sad

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

Mister
Guest

Thu Dec 30, 2004 9:08 pm   



Quote:
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.

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

J.F.
Guest

Fri Dec 31, 2004 12:26 am   



On Thu, 30 Dec 2004 22:08:57 +0100, Mister wrote:
Quote:
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.

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?

To nie bascom :-)

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

J.

Krzysztof Rudnik
Guest

Fri Dec 31, 2004 8:40 am   



Mister wrote:

Quote:
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.

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?


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

elektroda NewsGroups Forum Index - Elektronika Polska - scanf i AVRGCC

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map