Lunghezza numero

Salve a tutti, esiste una funzione per ottenere la lunghezza di un numero? Mi spiego meglio perchè detto così non capisco nemmeno io che scrivo: int variabile = 139; // 139 è composto da 3 numeri, 1, 3, 9 float variabile = 40.25; // 4 numeri, 4, 0, 2, 5 Un pò come il sizeof() per gli array Saluti.

Ciao Pelletta Lo vedo molto duro se vuoi anche calcolarti il numero di cifre decimali come fai l' esempio con "40.25" Ci spieghi meglio il tuo problema? Ti serve per visualizzare numeri e avere la cifra meno significante sempre alla stessa posizione? Ciao Uwe

Intanto grazie per la velocità con cui mi hai risposto, grande come sempre uwefed!
Dovrei inviare i numeri a dei display a 7 segmenti per questo cercavo di conoscerne la lunghezza…
I display sono ben 9 e gestiti tutti da degli shift register 74HC595 collegati in cascata. Ho optato per gli shift register perchè i MAX7219/7221 ne pilotano fino ad otto. I display non sono tutti in fila ma suddivisi in più pannelli, uno composto da 4, uno da 3 e un altro da 2 display 7 segmenti. Per altre info sono a disposizione.

la prima idea che mi viene da programmatore è di convertirlo in stringa e ci sarà una funzione per calcolare la lunghezza… forse sono ancora con java in testa.
stringa non c’è in C…
da un forum : dividi l’int per dieci e calcola quante volte lo fa

   1.
      while(n > 0)
   2.
      {
   3.
      n /= 10;
   4.
      count++;
   5.
      }

oppure, ma non l’ho provato (non considera il segno)

int length;
char digits[100]; /* should be big enough even for 128 bit longs */
sprintf(digits, "%d", n);
length = strlen(digits) - (n<0 ? 1 : 0);

;)ciao

la prima idea che mi viene da programmatore è di convertirlo in stringa e ci sarà una funzione per calcolare la lunghezza...

Stavo proprio facendo questo tentativo usando la funzione itoa ma ho visto che non accettava i float, per adesso provo come mi hai consigliato, grazie 1000.

Io vedo la cosa semplice:
if (numero < 1000) metti spazio vuoto
else (stampa numero)
if (numero <100) metti un altro spazio vuoto
else (stampa numero)

ciao Uwe

in php esisteva la funzione strlen() ora forse guarda se col C riesci a trovare una funzione come explode del php in modo da mettere tutto in array e poi trovi la lunghezza con un sizeof() :wink:

edit:
trovato ;D
non ho provato ma fai così:

#include <string.h>

char* num = "15";
int caratteri = 0;

void setup() {
  caratteri = strlen(15);
}

void loop() {
  .......
}

uhm… direi che è abbastanza facile, al massimo devi convertire il numero in char :smiley:

in C esistono le funzioni standard per le stringhe, guarda qui http://it.wikibooks.org/wiki/C/Appendice/Librerie_standard/string.h

Anche se il PHP usa una sintassi C le stringhe vengono trattate molto diversamente rispetto al C. Ciao Uwe