AVR GCC a scanf

Richard Kaliciak hw.kaliciak@stonline.sk
Úterý Květen 6 16:19:31 CEST 2008


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



Další informace o konferenci Hw-list