Domanda:
Converti int in char []
ATE-ENGE
2017-07-25 01:21:40 UTC
view on stackexchange narkive permalink

Sto cercando di convertire un valore int in un array di caratteri. attualmente ho scoperto che quanto segue restituirà [number”

  int num = [number] str = String (num); str.toCharArray (cstr, 16) ; Serial.println (cstr);  

Tuttavia, per Majenko's The Evils of Arduino Strings sento che questo codice farebbe sembrare il mucchio del mio Arduino un formaggio svizzero. C'è un modo migliore per cambiare un [int] in un array char [n] che eviti la classe S tring?

Una risposta:
Majenko
2017-07-25 01:26:43 UTC
view on stackexchange narkive permalink

itoa è il percorso migliore:

  int num = 1234; char cstr [16]; itoa (num, cstr, 10); - > "1234 " 

Puoi leggere ulteriori informazioni sull'utilizzo qui.

Se desideri un maggiore controllo sul formato del numero (e non tieni conto del maggiore utilizzo di PROGMEM) puoi usare sprintf (o il più sicuro snprintf ) per formattarlo:

  sprintf (cstr, "% 05d", num); - > "01234"  

O con la costante di stringa PROGMEM:

  sprintf_P (cstr, (PGM_P) F (" % 05d "), num); - >" 01234 " 

O con più valori:

  sprintf_P (cstr, (PGM_P) F ("% 02d:% 02d:% 02d "), ore, minuti, secondi); - >" 03:23:11 " 
Bello, sto cercando di prendere un valore int in secondi e convertirlo in hr: min: sec prima di `strcat ([c string], [time])` come ho capito, dovrò restare con `itoa` visto che non voglio che vada in seriale?
sprintf è una buona scelta. Aggiungerò un esempio.
Ok, sembra che funzionerà per me. come si fa a ottenere la sezione `(PGM_P) F ("% 02d:% 02d:% 02d "),`? (in particolare la parte `(PGM_P) F`)
La F è documentata nella documentazione di arduino PROGMEM. Il PGM_P cambia semplicemente il puntatore al tipo corretto per_P funzioni varianti.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...