Forum: Mikrocontroller und Digitale Elektronik printf - wieder einmal


von Brillitsch (Gast)


Lesenswert?

Hallo C-Experten,

in Codevision und mega128 arbeite ich mit folgender printf-Anweisung:

 char a;
 char b;
 char c;
 char d;
 char e;
 float Gleitkommazahl;
 .
 .
 printf( "%c%c%c%c%c%+1.5f%c", a, b, c, d, e, Gleitkommazahl, 0);
 .
 .
Der Genauigkeitsspezifizierer ist hier auf 5-Stellen hinter dem Komma
eingestellt.
Soweit funktioniert alles Bestens.

Mein Problem ist nun, daß ich die Stellenzahl hinter dem Komma, von 0
bis 5 variieren möchte.
Dazu habe ich Arrays angelegt und einen Zeiger deklariert:(müssen im
Flash abgelegt sein)

flash char fostr0[] = "%c%c%c%c%c%+1.f%c";
flash char fostr1[] = "%c%c%c%c%c%+1.1f%c";
flash char fostr2[] = "%c%c%c%c%c%+1.2f%c";
flash char fostr3[] = "%c%c%c%c%c%+1.3f%c";
flash char fostr4[] = "%c%c%c%c%c%+1.4f%c";
flash char fostr5[] = "%c%c%c%c%c%+1.5f%c";
char *pfostr;

Im Verlaufe des Programmes wird diesem Zeiger ein Array zugewiesen,
z.B.:
pfostr = fostr3   // Für 3 Stellen hinter dem Komma

Das abgeänderte printf sieht nun so aus:

printf( *pfostr, a, b, c, d, e, Gleitkommazahl, 0);

Codevision gibt keine Fehlermeldung aus, der Zeiger steht laut Studio4
auf fostr3, dennoch wird die Gleitkommazahl nicht ausgegeben.

Was mache ich falsch? Hat jemand einen Tip für mich?


Brillitsch

von Christian (Gast)


Lesenswert?

printf( *pfostr, a, b, c, d, e, Gleitkommazahl, 0); durch
printf( pfostr, a, b, c, d, e, Gleitkommazahl, 0); ersetzen ?!

von Brillitsch (Gast)


Lesenswert?

Hallo Christian,

besten Dank für deine Korrektur. Jetzt funktioniert es - zumindest bei
Zahlen kleiner als +/-1.

Werde' mich jetzt um die größeren Werte kümmern.

Schönen Gruß  Brillitsch

von Brillitsch (Gast)


Lesenswert?

Nachtrag:

>Jetzt funktioniert es - zumindest bei Zahlen kleiner als +/-1.

Dies war eine falsche Annahme. Es funktionierte nur bei den Zahlen
nicht, bei denen die Genauigkeit 0 war.

Also so:

flash char fostr0[] = "%c%c%c%c%c%+1.f%c";

Codevision verlangt für die Genauigkeit 0 die Schreibweise .0

In einem Lehrbuch für ANSI C gilt der . ohne weitere Nr. als
Genauigkeit 0.

Ist vielleicht für Codevision-User interessant.

Schönen Gruß    Brillitsch

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.