Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nothing Ear e Ear (a): gli auricolari per tutti i gusti! La ''doppia'' recensione
Nothing Ear e Ear (a): gli auricolari per tutti i gusti! La ''doppia'' recensione
Nothing propone sul mercato non uno ma ben due auricolari nuovi: Ear di terza generazione e Ear (a) ossia un nuovo modello a basso costo pronto a ritagliarsi una fetta di mercato. Entrambi rimangono fedeli al marchio per il design ancora trasparente ma fanno un balzo in avanti notevole per qualità e soppressione del rumore.  
Sony FE 16-25mm F2.8 G: meno zoom, più luce
Sony FE 16-25mm F2.8 G: meno zoom, più luce
Il nuovo Sony FE 16-25mm F2.8G si aggiunge all'analogo 24-50mm per offrire una coppia di zoom compatti ma di apertura F2.8 costante, ideali per corpi macchina altrettanto compatti (vedi A7c ) e fotografia di viaggio.
Motorola edge 50 Pro: design e display al top, meno il prezzo! Recensione
Motorola edge 50 Pro: design e display al top, meno il prezzo! Recensione
Motorola è decisa sulla sua strada: questo nuovo edge 50 Pro non guarda a specifiche stellari ma considera di più l’aspetto estetico. E si propone elegantemente con linee sinuose e un sistema operativo veloce. Peccato per un prezzo un po' fuori mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-06-2017, 14:21   #1
mally
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";
con un intero dato da una variabile in c?

Codice:
uint8_t = 34;
mally è offline   Rispondi citando il messaggio o parte di esso
Old 12-06-2017, 17:01   #2
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3305
La prima risposta che mi viene in mente è: sprintf
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 12-06-2017, 21:35   #3
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
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.

Quote:
Originariamente inviato da tomminno Guarda i messaggi
La prima risposta che mi viene in mente è: sprintf
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;
}
A spanne dovrebbe andare .

Infine fai:

Codice:
..
file->data = uint_to_string(123);
Chiaramente a quel punto però ti devi ricordare di quali stringhe sono state allocate dinamicamente e ricordarti di liberare la memoria quando non ti serve più la struttura.

Ultima modifica di WarDuck : 12-06-2017 alle 21:39.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 13-06-2017, 07:56   #4
mally
Senior Member
 
Iscritto dal: Mar 2016
Messaggi: 2061
ottimo grazie!
mally è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nothing Ear e Ear (a): gli auricolari per tutti i gusti! La ''doppia'' recensione Nothing Ear e Ear (a): gli auricolari per tutti ...
Sony FE 16-25mm F2.8 G: meno zoom, più luce Sony FE 16-25mm F2.8 G: meno zoom, più lu...
Motorola edge 50 Pro: design e display al top, meno il prezzo! Recensione Motorola edge 50 Pro: design e display al top, m...
Ecovacs Goat G1-800, mettiamo alla prova il robot tagliaerba facile ed efficace Ecovacs Goat G1-800, mettiamo alla prova il robo...
ASUS ProArt 1, un PC completo ad altissime prestazioni per creator e non solo ASUS ProArt 1, un PC completo ad altissime prest...
Tanti forni a microonde in offerta: c'&e...
Una storia di contraccezione forzata vin...
SYNLAB sotto attacco: sospesa l'attivit&...
BYD Seal U, primo contatto. Specifiche, ...
Intel ha completato l'assemblaggio dello...
Cina: aumenta del 40% la produzione di c...
GPT-4 quasi come un oculista: in un test...
Prezzi super per gli Apple Watch SE di s...
L'intelligenza artificiale ruba posti di...
The Witcher 3: disponibile su Steam il R...
Xiaomi 15: trapelano importanti specific...
Fallout 5? Meglio aspettare la seconda s...
Motorola Edge 50 Pro è ora disponibile s...
La tecnologia digitale sta trasformando ...
ASUSTOR presenta ADM 4.3 con nuove funzi...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:51.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Served by www1v