Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Zenfone 11 Ultra: il flagship ASUS ritorna a essere un 'padellone'
Recensione Zenfone 11 Ultra: il flagship ASUS ritorna a essere un 'padellone'
Zenfone 11 Ultra ha tantissime qualità interessanti, fra cui potenza da vendere, un display di primissimo livello, un comparto audio potente e prestazioni di connettività fra le migliori della categoria. Manca però dell'esclusività del predecessore, che in un settore composto da "padelloni" si distingueva per le sue dimensioni compatte. Abbiamo provato il nuovo flagship ASUS, e in questa recensione vi raccontiamo com'è andata.
Appian: non solo low code. La missione è l’ottimizzazione dei processi con l'IA
Appian: non solo low code. La missione è l’ottimizzazione dei processi con l'IA
Abbiamo partecipato ad Appian World 2024, evento dedicato a partner e clienti che si è svolto recentemente nei pressi di Washington DC, vicino alla sede storica dell’azienda. Nel festeggiare il 25mo anniversario, Appian ha annunciato diverse novità in ambito intelligenza artificiale
Lenovo ThinkVision 3D 27, la steroscopia senza occhialini
Lenovo ThinkVision 3D 27, la steroscopia senza occhialini
Primo contatto con il monitor Lenovo ThinkVision 3D 27 che grazie a particolari accorgimenti tecnici riesce a ricreare l'illusione della spazialità tridimensionale senza che sia necessario utilizzare occhialini
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


Recensione Zenfone 11 Ultra: il flagship ASUS ritorna a essere un 'padellone' Recensione Zenfone 11 Ultra: il flagship ASUS ri...
Appian: non solo low code. La missione è l’ottimizzazione dei processi con l'IA Appian: non solo low code. La missione è ...
Lenovo ThinkVision 3D 27, la steroscopia senza occhialini Lenovo ThinkVision 3D 27, la steroscopia senza o...
La Formula E può correre su un tracciato vero? Reportage da Misano con Jaguar TCS Racing La Formula E può correre su un tracciato ...
Lenovo LEGION e LOQ: due notebook diversi, stessa anima gaming Lenovo LEGION e LOQ: due notebook diversi, stess...
eFootball taglia il traguardo dei 750 mi...
MS-DOS 4.0 diventa open source: Microsof...
Micron riceverà 6,1 miliardi di d...
STALKER 2 Heart of Chornobyl: nuovo trai...
Google: ancora un rinvio per lo stop ai ...
Lotus Evija X è la seconda auto elettric...
NIO e Lotus annunciano una grossa novit&...
Esclusive PlayStation su Xbox? Sì...
CATL: una nuova batteria per auto elettr...
TikTok al bando negli USA? Biden firma, ...
Taglio di prezzo di 150 euro per SAMSUNG...
Utenti Amazon Prime: torna a 148€ il min...
Microsoft sfiora i 62 miliardi di dollar...
Coca-Cola al cloud con un pizzico di IA:...
Prodotti TP-Link Tapo in offerta: videoc...
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: 19:37.


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