Da int a stringa ma con dimensione variabile... come si fa?

di il
9 risposte

Da int a stringa ma con dimensione variabile... come si fa?

Ciao ragazzi sono nuovo del forum, mi trovo difronte a un piccolo problemuccio e spero che voi sicuramente più esperti di me possiate darmi un aiutino...
Parto con il dire che non sono un gran esperto di c++ per questo Vi chiedo, nel caso vogliate aiutarmi di darmi una spiegazione facile e magari con un esempio...

Sto realizzando un applicazione per un micro, e sto utilizzando il linguaggio C++.
Dovrei convertire un numero intero in una stringa, il problema non è tanto la conversione, ma è la dimensione della stringa, mi spiego meglio con un esempio:

unsigned int numero;
unsigned int txt[10]; 

numero=15;
intostr(numero,txt);
in questa maniera ottengo una stringa, che avrà come "valore"
8 spazi e 15 quindi: txt è uguale a: 15
il mio problema è eliminare i 8 spazi prima del 15;
voi mi direste di dichirare txt[2], ma non posso farlo, perché numero può avere un valore che può variare da 1 a 9999999999 (10 nove)

esiste un modo in c++ per far si che la stringa abbia come lunghezza, (in questo caso) 2?
cioè esiste un modo per dichiararla dopo la lunghezza?
spero tanto di essere riuscito a farmi spiegare...
p.s se uso ltrim la mia variabile ha come valore: 15 e poi 8 spazi vuoti, e anche questo non va bene

9 Risposte

  • Re: Da int a stringa ma con dimensione variabile... come si fa?

    esiste un modo in c++ per far si che la stringa abbia come lunghezza, (in questo caso) 2?
    cioè esiste un modo per dichiararla dopo la lunghezza?
    spero tanto di essere riuscito a farmi spiegare...
    p.s se uso ltrim la mia variabile ha come valore: 15 e poi 8 spazi vuoti, e anche questo non va bene
    Se stai lavorando su un micro dovrai imparare a fare da te queste cose, senza appoggiarti a librerie.
    Tuttavia, per iniziare, verifica se hai a disposizione la funzione sprintf() con la quale puoi trasformare un intero in stringa, es.:
    char str[20];
    sprintf( str, "%d", valoreint );
  • Re: Da int a stringa ma con dimensione variabile... come si fa?

    Si, certo che c'è, ma questa mi restituisce semplicemente il numero di caratteri scritti di una stringa, ma la mia stringa occupa sempre ( nel caso che mi hai descritto tu) 20
  • Re: Da int a stringa ma con dimensione variabile... come si fa?

    Ma non devi trasformare un intero in stringa? sprintf() fa proprio questo, senza aggiungere spazi a destra o sinistra.
    Una dimensione massima devi comunque darla, in questa caso 20 è anche (volutamente) esagerata.
    Dato che parli di valori con 10 cifre (per un int) mi fa pensare che hai per le mani un micro a 32bit almeno, quindi un micro di una certa potenza al quale sicuramente non fanno paura 20 bytes sullo stack!
  • Re: Da int a stringa ma con dimensione variabile... come si fa?

    Mmm non ci salto proprio fuori...
    Si, comunque sto facendo un programma per un pic32;
    in pratica dovrei salvare delle variabili di tipo intero su una memoria sd;
    dopo tutta l'inizializzazione del tipo di partizione, velocità di trasferimento, tipo ecc ecc, alla fine creo il file, e fino a qua tutto ok, poi dovrei scriverci all'interno;
    e qua nasce il bello\brutto!!!
    il comando che dovrei usare ha questa sintassi:
    void Mmc_Fat_Write(char *fdata, unsigned data_len);

    quindi gli dovrei dare la stringa e la lunghezza di essa;
    se io gli faccio misurare la stringa con strlen mi dice che è lunga tanto quanto è stata dichiarata,
    quindi non so proprio come fare per dirgli che la stringa è più corta, visto che ha spazi vuoti...
    non capisco proprio come potrei usare il comando che tu mi hai suggerito...
  • Re: Da int a stringa ma con dimensione variabile... come si fa?

    Con la sprintf che ti è stata proposta non avrai spazi dopo il numero nella stringa. Lo spazio previsto (ad esempio 20 caratteri) sarà riempito in questo modo

    12345 -> caratteri del valore convertito
    \0 -> zero binario indicatore di fine stringa
    ... -> altri 14 byte casuali che non devi prendere in considerazione.

    Quindi la strlen di questa stringa darà 5 come risultato non 20.
  • Re: Da int a stringa ma con dimensione variabile... come si fa?

    Grazie mille ragazzi, ho risolto
  • Re: Da int a stringa ma con dimensione variabile... come si fa?

    Presumo con
    
    char str[20];
    sprintf( str, "%d", valoreint );
    Mmc_Fat_Write(str, strlen(str));
    
  • Re: Da int a stringa ma con dimensione variabile... come si fa?

    Adesso provo come mi hai suggerito tu!!! per il momento ci sono saltato fuori cosi:

    inttostr(intero, stringa);
    res = Ltrim(stringa);
    Mmc_Fat_Write(res,strlen(res));
  • Re: Da int a stringa ma con dimensione variabile... come si fa?

    Perfetto!!!! anche con il tuo comando!!!
    anzi meglio!!! risparmio una riga!!!!!
    MILLLEEEEEE grazie!!!!!
Devi accedere o registrarti per scrivere nel forum
9 risposte