arduino / arduino/ArduinoCore-API
ANSI-C-like fprintf(), fscanf()
- Lenguaje dominante
- C++
- Estrellas
- 306
- Forks
- 150
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
Urgently needed: ANSI-C-like `fprintf()`, `fscanf()`
Actually homebrewed `fprintf_` works fine (SD file checked on PC), just `fscanf_` muddles all up.
Up to now I've used a homebrewed function `fscanf_` but it doesn't work for floats in larger files (>400 elements), neither by 1.6.1 nor by 1.6.3 nor by 1.6.5.
These are the homebrewed functions:
Code:
```cpp
//*******************************************************************************_**_********
int32_t fscanf_ ( File \* stream, const char fmtstr[], ... ) {
const int32_t MAXSTRSIZE = 1024;
char str[MAXSTRSIZE];
va_list args;
int32_t i=0, cnt=0;
int16_t chr;
va_start(args, fmtstr);
strcpy(str, "");
while ( (stream->available()) && (i < MAXSTRSIZE-1) ) {
chr = stream->read() ;
if (chr>=0 && chr!='\n') {
str[i]=(char)chr;
++i;
}
else break;
}
str[++i] = '\0';
cnt = vsscanf( str, fmtstr, args );
va_end(args);
return cnt;
}
//*******************************************************************************_**_********
int32_t fprintf_ ( File \* stream, const char fmtstr[], ... ) {
char str[1024];
va_list args;
int32_t num;
va_start( args, fmtstr );
num = vsnprintf(str, sizeof(str), fmtstr, args);
stream->print(str);
va_end( args );
return num;
}
//*******************************************************************************_**_********
```
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Evaluación
Este issue todavía no se ha evaluado.