"Attaccare" una lettera ad un int

Ciao a tutti, sto impazzendo con questo codice… Vorrei aggiungere uno “'0” prima dei minuti se sono minori di 10, in modo da avere 01 e non 1 sull’ lcd…

    int minuti = rtc.getMinutes();
    if (minuti<10){
      char minuti2[5];
      sprintf(minuti2, "0%d", minuti);
      render_big_number(atoi(minuti2),9,0);
    }
    else{
      render_big_number(minuti,9,0);
    }

Tentativo 2:

    int minuti = rtc.getMinutes();
    String tmp = "";
    if (minuti<10){
      tmp = "0";
    }
    tmp += minuti;
    render_big_number(Str2int(tmp),9,0);

Non capisco, perchè mai non funziona?!
Compila senza problemi ma alla fine lo “0” non c’è, forse non riesce a capire se è minore di 10? Sto usando a libreria di Leo ma dubito influisca… a meno che non mi abbia lanciato qualche sortilegio :grin:
Grazie mille!

perchè rinconvertendo ad intero (atoi) perdi di nuovo lo zero... devi convertire il numero in stringa

D’oh, ho provato con questo codice:

    minuti = rtc.getMinutes();
    String tmp = "";
    if (minuti<10){
      tmp = "0";
    }
    tmp += minuti;
    char buffer[3]; //max length is three units
    tmp.toCharArray(buffer, 3);
    render_big_number(buffer,9,0);

E mi da questo errore, però non riesco ad interpretarlo, Significa che può prendere come input solo int?

LCD:98: error: invalid conversion from ‘char*’ to ‘int’
LCD:98: error: initializing argument 1 of ‘void render_big_number(int, byte, byte)’

Devi lavorare con stringe o array di char oppure stampare subito lo zero sul display. Ciao Uwe

    if (minuti<10){
      render_big_number(0,9,0);//printo prima lo 0
      render_big_number(minuti,13,0);
    }else{
      render_big_number(minuti,9,0);
    }

Soluzione non tanto pulita ma funziona… intanto che ci sono sulla formattazione ho un piccolo dubbio, usando sprintf le lettere che metto dopo ai “%” sono a mia discrezione? Cioè una cosa come sprintf(var, “Ciao %ambarabbaciccicoco”, var2); funziona ugualmente o c’è un ordine logico?

Grazie mille :wink:

san google, primo risultato cercando printf:

La seguente tabella mostra i possibili formati dei caratteri per le istruzioni printf/scanf:

Formato (%) Tipo Risultato

c char singolo carattere i,d int numero decimale o int numero ottale x,X int numero esadecimale (notazione maiuscola o minuscola) u int intero senza segno s char * stampa una stringa terminata con \0 f double/float formato -m.ddd... e,E " formato scientifico -1.23e002 g,G " "e" o "f" ma piu' compatti

% - stampa il carattere %

Tra il simbolo % ed il carattere di formato, e' possibile mettere:

  • (segno meno) - giustificazione a sinistra; numero intero - ampiezza del campo m.d - m=ampiezza del campo, d=precisione del numero di cifre dopo il punto decimale, o numero di caratteri da una stringa

Cosi', ad esempio, potremo avere:

printf("%-2.3f\n",17.23478);

e l'output a video sara':

17.235

e:

printf("VAT=17.5%%\n");

dove l'output sara':

VAT=17.5%

uwefed: Devi lavorare con stringe o array di char oppure stampare subito lo zero sul display. Ciao Uwe

Quoto. E' il sistema che uso anch'io. printf & co. sono nati per l'output su terminale, non vanno per il sottile in quanto a consumo di risorse