|
|
|
|
Strumenti |
12-06-2017, 14:21 | #1 |
Senior Member
Iscritto dal: Mar 2016
Messaggi: 2061
|
[c] alimentare stringa con variabile
come si alimenta una struttura così:
Codice:
struct fs_file { const char *data; int len; } file->data = "123"; Codice:
uint8_t = 34; |
12-06-2017, 17:01 | #2 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3305
|
La prima risposta che mi viene in mente è: sprintf
|
12-06-2017, 21:35 | #3 |
Senior Member
Iscritto dal: May 2001
Messaggi: 12580
|
Se ho capito bene vuoi inizializzare una stringa a partire da un intero, quindi hai bisogno di effettuare la conversione.
In tal caso come dice tomminno devi usare una funzione della famiglia s*printf. Meglio usare snprintf. Nota che snprintf() ha bisogno di un buffer già allocato. La cosa migliore è dato un numero intero X, allocare un buffer (con malloc) di dimensione pari a log10(X)+2 bytes. Con 1+log10(X) hai una approssimazione del numero di digit necessari per rappresentare il numero, a cui sommare poi un ulteriore 1 per il carattere terminatore. PS: nota che dovresti aggiungere un ulteriore 1 nel caso di interi con segno (devi considerare infatti lo spazio per un eventuale carattere '-'). Qualcosa del tipo: Codice:
char* uint_to_string(uint32_t n) { const size_t BUFF_SZ = 2+log10(n); char *buffer = malloc(BUFF_SZ); if (!buffer) { fprintf(stderr, "unable to allocate memory"); exit(-1); } snprintf(buffer, BUFF_SZ, "%u", n); return buffer; } Infine fai: Codice:
.. file->data = uint_to_string(123); Ultima modifica di WarDuck : 12-06-2017 alle 21:39. |
13-06-2017, 07:56 | #4 |
Senior Member
Iscritto dal: Mar 2016
Messaggi: 2061
|
ottimo grazie!
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:51.