alukard990 ha scritto:Salve a tutti,
ho scritto questo semplice codice di conversione da intero a stringa :
- Codice: Seleziona tutto
#include <stdio.h>
#include <string.h>
void intTostring(int number, char* output)
{
char buffer[3]; // 3 digit buffer
sprintf(buffer,"%d", number);
strcpy(output, buffer);
}
per visualizzare il risultato ho collegato il PIC ad un hitachi 44780. La conversione funziona ma il compilatore mi indica il seguente warning "type qualifier mismatch in assignment" alla riga 7, potreste indicarmi dove sbaglio? Grazie mille

Starei attento a quel char[3].
la famiglia printf opera su C string che quindi includono lo \0 a fine stringa. Da cui 3 cifre -> 4 char.
Il sistema è contorto, non si capisce perché il giro con strcpy, la extra chiamata a funzione e il buffer supplementare specialmente in ambito embedded.
Per una roba del genere anche se in ambito embedded per questioni di memoria/risorse si può essere più tolleranti nell'uso delle macro io eviterei.
Guarda come è definita la sprintf, potrebbe essere che stai usando un char mentre è definita su unsigned char o whatever.
Prova a fare cast sia sul format che cambiare tipo al buffer.
Su embedded visto che la famiglia printf è un bel malloppone e può consumare parecchio stack può essere che manchi di qualche cosa o sia implementata diversamente dallo std. Vale la pena farsi una cultura.
Giacchè stai usando un display magari ti avrai bisogno di diverse funzionalità della famiglia delle funzioni printf e quindi potrebbe non essere il tuo caso ma appunto considerando il precedente paragrafo potrebbe essere conveniente che tu ti scriva un set di funzioni per conversioni. Occhio però ai buffer overflow per esempio.
Va beh mi darei un 4 in italiano ma non ho voglia di sistemare.