Allineamento caratteri a destra

Perfetto! Capito tutto.
Per i decimali ho l'esempio di fabpolli

Siete dei miti !

steve-cr:
Per i decimali ho l'esempio di fabpolli

... sarebbe meglio che ti studiassi le varie "direttive" e le costruissi tagliate su misura per le tue esigenze ... anche perchè permettono veramente delle belle cosette :wink:

Guglielmo

gpb01:
Esattamente allo stesso modo, come ti ho appena scritto ...

sprintf(strDestinazione, "Watt = %5i, Amp = %5i", varWatt, varAmp);

Guglielmo

Si, però non mi fate impazzire, la virgola tra i due descrittivi non va...

sprintf(strDestinazione, "Watt = %5i Amp = %5i", varWatt, varAmp);

... ho capito, Guglielmo l'ha messa apposta per vedere se stavo provando realmente....

steve-cr:
Si, però non mi fate impazzire, la virgola tra i due descrittivi non va...

... non mi risulta, dovrebbe andare normalmente ... ::slight_smile:

Ora provo anche io ...

Guglielmo

Si, diciamo che poi da tante soddisfazioni levare 20 righe di programma e di IF e risolvere tutto con una riga.

Adesso stavo provando una riga con i miei due valori Power e Irms di cui il primo max 4 caratteri e il secondo 2 caratteri più 2 decimali, il tutto su una riga da 20 caratteri...

Sto provando la terza riga di fabpolli ma è ostica...

... ho provato e, come immaginavo, le virgole funzionano correttamete, non so cosa tu hai scritto ::slight_smile:

Guglielmo

gpb01:
... ho provato e, come immaginavo, le virgole funzionano correttamete, non so cosa tu hai scritto ::slight_smile:

Guglielmo

    snprintf(riga11, 20,"Watt %4d,  Amp %4d", Power, Irms);

scritto così mi appare "Watt 84, Amp 4", cioè si vede la virgola dopo Il valore dei Watt, mentre se la tolgo non si vede e funziona ugualmente

Ahhhhhhh si, certo, sono io che ho il vizio, nelle scritte, di separare le cose con la virgola, ma è ovviamente un normale carattere ASCII come un'altro che puoi tranquillamente togliere se non ti piace :smiley: :smiley: :smiley:

Guglielmo

steve-cr:
Si, diciamo che poi da tante soddisfazioni levare 20 righe di programma e di IF e risolvere tutto con una riga.

Adesso stavo provando una riga con i miei due valori Power e Irms di cui il primo max 4 caratteri e il secondo 2 caratteri più 2 decimali, il tutto su una riga da 20 caratteri...

Sto provando la terza riga di fabpolli ma è ostica...

Bene, per gli interi tutto chiaro ma per i decimali mi appare di tutto meno che il valore reale. Ho visto che se sbaglio a dare meno caratteri del valore reale, lo stesso valore viene modificato (!)

snprintf(riga11, 20,"Watt %4d  Amp %2d.%d", Power, Irms);

Non puo fare così se Irms è un float ... devi fare come ti ha detto fabpolli, passargli la parte intera e la parte decimale.

Purtroppo, per ragioni di occupazione di memoria, la gestione dei float nella sprintf(), su Arduino, è stata tolta e quindi ... occorre ricorre a trucchi :wink:

Guglielmo

gpb01:
... ho provato e, come immaginavo, le virgole funzionano correttamete, non so cosa tu hai scritto ::slight_smile:

Ovvio che funziona!
Per un momento mi hai fatto dubitare dell'universo.

E' un puro testo con annidati dei marcatori particolari per bindare valori con formattazione.

La sintassi è %[flags][width][.precision][length]specifier

Poteva sballare solo se la virgola fosse stata un carattere riservato a qualche strano scopo all'interno di uno dei suoi componenti, ma sarebbe stato un po' cervellotico usare per scopi implementativi un carattere di uso comune nell'ambito in cui questa funzione dovrebbe essere maggiormente usata.

Immagino che produrre output tipo Valore 1, valore 2, valore 3 sia il pane quotidiano per questa funzione

maubarzi:
Ovvio che funziona!
Per un momento mi hai fatto dubitare dell'universo.

:smiley: :smiley: :smiley: ... infatti, quando non ho capito cosa intendesse, è venuto anche a me il dubbio che su Arduino, per qualche strano motivo, facesse qualche altra cosa e fosse un carattere riservato ...

Guglielmo

hehehe a volte le frasi più banali mettono i dubbi più assurdi.

Quella del float non implementato mi era proprio scappata. E' una di quelle cose che rischiano di farti perdere intere giornate a capire il perchè di certi risultati inattesi.

gpb01:
Non puo fare così se Irms è un float ... devi fare come ti ha detto fabpolli, passargli la parte intera e la parte decimale.

Purtroppo, per ragioni di occupazione di memoria, la gestione dei float nella sprintf(), su Arduino, è stata tolta e quindi ... occorre ricorre a trucchi :wink:

Guglielmo

Si, c'ero arrivato dopo aver provato almeno una 20ina di volte...
Grazie !

/ fa la divisione intera troncando i decimali
% da il resto della divisione

7/5 = 1
7%5 = 2

EDIT: Ho le traveggole? ho risposto ad un post che mi sono sognato o è stato eliminato?

maubarzi:
EDIT: Ho le traveggole? ho risposto ad un post che mi sono sognato o è stato eliminato?

Ci sta che ogni tanto qualcuno realizza di averla sparata enorme, invece di editare il post sbarrando il testo e correggendosi preferisce eliminarlo... fischiettando :slight_smile:

maubarzi:
EDIT: Ho le traveggole? ho risposto ad un post che mi sono sognato o è stato eliminato?

Non so, ma steve-cr esponeva il suo dubbio QUI ... ::slight_smile:

Guglielmo

fabpolli:
Ci sta che ogni tanto qualcuno realizza di averla sparata enorme, invece di editare il post sbarrando il testo e correggendosi preferisce eliminarlo... fischiettando :slight_smile:

Non è questo il caso, ma, anche io a volte ho eliminato interi miei post rendendomi conto di aver capito male la domanda ...
... inutile lasciare risposte che non c'entrano nulla :wink:

Guglielmo

Quindi richiamo il 118 e disdico l'intervento.
grazie, mi stavo preoccupando

P.S.
Scusate il ritardo ma essendo ancora nabbo il forum mi impedisce di scrivere prima che siano passati 5 minuti...

fabpolli:
Ci sta che ogni tanto qualcuno realizza di averla sparata enorme, invece di editare il post sbarrando il testo e correggendosi preferisce eliminarlo... fischiettando :slight_smile:

Mi sento... osservato... :o ....

Cioè, per dire, lo avrò lasciato si e no un minuto, poi ci sono arrivato da solo...
E non era nemmeno una sparata "enorme" !!!
Ebbene si, l'ho eliminato fischiettando... sperando che nessuno lo avesse visto! :confused: