Convertire Intero in una Stringa

9 Anni 6 Mesi fa - 9 Anni 6 Mesi fa #6 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Convertire Intero in una Stringa
A seconda che tu usi C18 o XC8 itoa e' differente.

Se la libreria fa riferimento al C18 devi includere

#include <ctype.h>

e usare il formato itoa (value, (unsigned char*) convertedInt);

Se usi XC8 devi includere:

#include <xc.h>
#include <stdlib.h>

e usare il formato

itoa ((unsigned char*) convertedInt, value,10);


se il problema persiste aggiungi il prototipo di funzione:

extern itoa (xxxx);

con le x da sostituirsi con il tipo delle variabili a seconda della funzione usata.

La funzione sprintf(stringa,"%d",a); e' piuttosto "pesante", usa itoa.

Saluti,

Mauro
Ultima Modifica 9 Anni 6 Mesi fa da Mauro Laurenti.
Ringraziano per il messaggio: velvettiere

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
9 Anni 6 Mesi fa #7 da Pinna
Risposta da Pinna al topic Convertire Intero in una Stringa
quale versione di libreria laurtec stai usando? te lo chiedo perchè quell'errore sul delay_ms l'ho avuto anch'io e l'avevo risolto commentando una riga nel file LCD_44780.h... mi spiego meglio, se per esempio delay.c richiama delay.h ma anche LCD_44780.h richiama lo stesso file, alla fine avrai una doppia inclusione... controlla ogni file che lo richiama... (mi ha fatto dannare una sera intera, prima di capire cosa dovevo fare esattamente) :)

Marcello

Chi vola vale, chi vale vola, chi non vola è un vile
Ringraziano per il messaggio: velvettiere

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Pinna
  • Avatar di Pinna
  • Moderator
  • Moderator
Di più
9 Anni 6 Mesi fa #8 da velvettiere
Risposta da velvettiere al topic Convertire Intero in una Stringa

Pinna ha scritto: quale versione di libreria laurtec stai usando? te lo chiedo perchè quell'errore sul delay_ms l'ho avuto anch'io e l'avevo risolto commentando una riga nel file LCD_44780.h... mi spiego meglio, se per esempio delay.c richiama delay.h ma anche LCD_44780.h richiama lo stesso file, alla fine avrai una doppia inclusione... controlla ogni file che lo richiama... (mi ha fatto dannare una sera intera, prima di capire cosa dovevo fare esattamente) :)

Marcello


Grazie mille. Il problema infatti era proprio questo. Ho risolto caricando la nuova libreria aggiornata.

Rimane il problema di itoa.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • velvettiere
  • Senior Member
  • Senior Member
Di più
9 Anni 6 Mesi fa #9 da velvettiere
Risposta da velvettiere al topic Convertire Intero in una Stringa

Mauro Laurenti ha scritto: A seconda che tu usi C18 o XC8 itoa e' differente.

Se la libreria fa riferimento al C18 devi includere

#include <ctype.h>

e usare il formato itoa (value, (unsigned char*) convertedInt);

Se usi XC8 devi includere:

#include <xc.h>
#include <stdlib.h>

e usare il formato

itoa ((unsigned char*) convertedInt, value,10);


se il problema persiste aggiungi il prototipo di funzione:

extern itoa (xxxx);

con le x da sostituirsi con il tipo delle variabili a seconda della funzione usata.

La funzione sprintf(stringa,"%d",a); e' piuttosto "pesante", usa itoa.

Saluti,

Mauro



Grazie mille per le dritte. Usando c18 ho incluso ctype.h che purtroppo non mi ha risolto l'errore.

Allora vorrei provare ad aggiungere il prototipo di funzione come da te consigliato ma non l'ho mai fatto e non riesco a trovare materiale utile allo scopo.

Mi potresti gentilmente fare un esempio?

io ho aggiundo extern itoa(int,char); ma mi viene restituito un errore.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • velvettiere
  • Senior Member
  • Senior Member
Di più
9 Anni 6 Mesi fa #10 da Pinna
Risposta da Pinna al topic Convertire Intero in una Stringa
un esempio valido lo trovi nel firmware del robot domotino, esattamente nel file mod.h :)... in pratica, facendo un esempio, supponiamo che tu abbia un intero di tre cifre chiamato value che vuoi visualizzare sul display. Per convertire in stringa ogni singola cifra di questo intero devi dichiarare un array, es data[2]. A questo punto itoa (value, (unsigned char*) convertedInt) diventa "itoa (value, data)". La cella data[0] conterrà la prima cifra del tuo intero convertita in stringa, data[1] la seconda e data[2] la terza... ora puoi inviare, usando la funzione prevista dalla libreria LCD_44780, ogni singola stringa al display


Marcello

Chi vola vale, chi vale vola, chi non vola è un vile

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Pinna
  • Avatar di Pinna
  • Moderator
  • Moderator
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login