AVR GCC a scanf

Slavomir Tomascik hw_tomascik@credit.t-com.sk
Úterý Květen 6 22:44:32 CEST 2008


Tak este doplnok, scanf float ako som napisal, postupuj podla 
toho linku, prihod este libscanf_flt a do parametrov pre linker 
dopln dalsi riadok "-Wl,-u,vfscanf". Mne uz takyto bastard beha OK.
	result = sscanf(buff, fmt, &f);
	result = sscanf("357.0", "%5f", &f);
	result = sscanf("357", "%d", &v);
	result = sscanf("357", "%d", &v);
	sprintf(buff,"A%5f",d);
	sprintf(buff,"A%d",v);

Slavo T.

> Nazdar,
> 
>    neviem, ci to uz mas vyriesene, ale ked nie...
> Vyskusal som to u seba, a dosiel som k zaveru, ze sscanf je 
> implementovana (funguje mi integer), a "iba" nepodporuje float. 
> Aby bolo jasne, tak s AVR-GCC sa iba zacinam hrat ;-) Normalne 
> totiz nefunguje ani float sprintf, a treba urobit dalsie kroky 
> napr. podla:
> http://winavr.scienceprog.com/avr-gcc-tutorial/using-sprintf--function-for-float-numbers-in-avr-gcc.html
> aby si rozbehol float pre sprintf. A kedze taka ista kniznica 
> (libscanf_flt.a) je aj pre sscanf, tak myslim, ze to bude v tom. 
> Treba ju tam dodat, a povedat o tom linkeru. Toto este nemam.
> 
> Slavo T.
> 
>> Dobry den,
>>
>> chcem sa opytat tych, co pouzivaju AVR-GCC (WinAVR), ci je 
>> implementovana funkcia sscanf a ci funguje, pripadne kde robim chybu. 
>> Mam takyto priklad:
>>
>> // needed for use of PSTR below
>> #include <avr/pgmspace.h>
>> #include <stdio.h>
>> #include <stdlib.h>
>>
>> char PROGMEM fmt[] = "%f";
>>
>> int main( void ){
>> 	char buffer[20] = {"1.25"};
>> 	float flFaktor = 0.0;
>> 	int result;
>> 	
>> 	result = sscanf( buffer, "%f", &flFaktor );
>> 	flFaktor = 1.0;
>> 	result = sscanf_P( buffer, fmt, &flFaktor );
>> 	flFaktor = 2.0;
>> 	flFaktor = atof( buffer );
>> 	flFaktor = 3.0;
>> 	result = sscanf_P( buffer, PSTR( "%f" ), &flFaktor );
>> 	flFaktor = 4.0;
>> 	flFaktor = strtod( buffer, (char**)NULL );
>> 	
>> 	return 0;
>> }
>>
>> Je to prelozene s "gcc version 4.2.2 (WinAVR 20071221)" v AVR studiu, s 
>> vypnutou optimalizaciou, aby som videl vysledky:
>>
>> avr-gcc.exe  -mmcu=atmega128 -Wall -gdwarf-2 -std=gnu99 -O0 
>> -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP 
>> -MT test-float.o -MF dep/test-float.o.d  -c  ../test-float.c
>>
>> Ked ten program v simulatore krokujem, tak atof a strtod funguju 
>> (flFaktor=1.25), ale sscanf tu hodnotu nemeni.
>>
>> Poradi niekto?
>> Pripadne to vyskusajte u seba, ci vam to funguje.
>>
>> Richard Kaliciak
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list@list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list