Go Down

Topic: [Codice] inserimento variabili in puntatore char (Read 298 times) previous topic - next topic

Jenosky

Ragazzi domanda di programmazione:

Code: [Select]
byte variabile01, variabile02
char* mess01 = "Comune 00" + variabile01 + " Macchina " + variabile02 + " contenitore pieno";


Qualcuno sa come posso mettere delle variabili quando inizializzo un puntatore char*?
Ho fatto blandi tentativi.
Le variabili sono di tipo byte e le avevo convertite in stringhe ma così non va.

gpb01

Perché in 'C' NON esiste poter sommare le stringhe !

Quella è una cosa che è possibile fare con la "classe" String (... assolutamente sconsigliata su una piccola MCU come quella di Arduino) ed in C++.

Devi pre-allocare il vettore mess01 per le sue massime dimensioni (... ricorda lo 0x00 finale nel conteggio) e quindi, comporre la tua stringa usando le funzioni che trovi nella AVR libc (... che è sempre disponibile), in <string.h> .

Guarda sia la strcpy() che la strcat() ;)

Guglielmo
Search is Your friend ... or I am Your enemy !

Jenosky

Quindi dovrei fare qualcosa del tipo:

Code: [Select]
byte variabile01
char* mess01[160];
mess01=strcat("testo", variabile01)


Il mio problema è mettere in una char* il valore di una variabile di tipo byte

gpb01

Il mio problema è mettere in una char* il valore di una variabile di tipo byte
Sempre in AVR libc, basta cercare :smiley-twist: , ci sono le funzioni di conversione di numerici in stringa ... es. itoa() che trovi in <stdlib.h>

Ah ... la AVR libc ... va STUDIATA tutta perché è fondamentale per lavorare in 'C' ... quindi dedicatici ... ;)

Guglielmo
Search is Your friend ... or I am Your enemy !

SukkoPera

"Code is read much more often than it is written, so plan accordingly. Design for readability."

Guida rapida a ESP8266: https://goo.gl/kzh62E

nid69ita

Anche la snprintf() è utile, non gestisce però i float/double su Arduino.
In pratica "stampi" non a video/seriale ma "dentro" al vettore  usando la pratica sintassi della printf() classica del c
Esempio:

Code: [Select]
char buf[20];
byte valore=123;
snprintf(buf,20,"Valore=%04d",valore);
Serial.println(buf);        // stampa   Valore=0123



my name is IGOR, not AIGOR


Go Up