Forum: Mikrocontroller und Digitale Elektronik Problem mit printf


von Andreas (Gast)


Lesenswert?

Grüß Gott alle miteinand'

ich habe eine kurze Frage bei der ich im dunkeln Tappe weil keiner der 
Tutoren für C im Netz was drüber weiss. Folgendes:

- Ich habe eine sehr lange printf anweisung die sieht so aus :

printf("AIN[%d][%d] = %u.%.3u 
V\n",m,n,(int)(AD_ARRAY[m][n]/V_SCALE),(int)(AD_ARRAY[m][n]%V_SCALE)*R_S 
CALE);

Könnte ich jetzt die irgendwie auf mehrere Zeilen verteilen damit das 
besser aussieht aber ohne das ich zuzüglich mehrere printf's schreibe ??


Danke für die Hilfe (im Vorraus)

von g0nz00 (Gast)


Lesenswert?

Soweit ich weiß ist es egal solange kein ";" mittendrin erfolgt kannst 
du es trennen und auch untereinander schreiben.

printf("AIN[%d][%d] = %u.%.3u
V\n",m,n,(int)
(AD_ARRAY[m][n]/V_SCALE),
(int)(AD_ARRAY[m][n]%V_SCALE)*R_SCALE);

Einfach mal ausprobieren ist schon ne weile her bei mir

g0nz00

von Simon K. (simon) Benutzerseite


Lesenswert?

1
printf("%i, %d, %f",  
2
      5,
3
      7,
4
      6.7);

Sowas funktioniert bei mir jedenfalls. Also: einfach nur NewLines 
einbauen wo du willst.

von Stefan (Gast)


Lesenswert?

1
printf("AIN");
2
printf("[%d]",m);
3
printf("[%d]",n);
4
printf(" = ");
5
printf("%u.",(int)(AD_ARRAY[m][n]/V_SCALE));
6
printf("%.3u",(int)(AD_ARRAY[m][n]%V_SCALE)*R_SCALE);
7
printf(" V\n");

  

von Stefan (Gast)


Lesenswert?

Ähm richtig lesen, Stefan, genau so soll es nicht sein!
1
   printf("AIN[%d][%d] = %u.%.3u V\n",
2
               m,
3
                   n,
4
                         (int)(AD_ARRAY[m][n]/V_SCALE),
5
                            (int)(AD_ARRAY[m][n]%V_SCALE)*R_SCALE
6
         );

  

von Uhu U. (uhu)


Lesenswert?

Man kann sogar Strinkonstanten über mehrere Zeilen verteilen:

   printf("abc %d "
          "def%c",
          15,
          'g');

ergibt dasselbe wie

   printf("abc %d def%c", 15, 'g');

von Simon K. (simon) Benutzerseite


Lesenswert?

Stefan wrote:
> Ähm richtig lesen, Stefan, genau so soll es nicht sein!

Selbstgespräche? ;)

von Ramon (Gast)


Lesenswert?

falsch,
richtig geht es so
1
printf("Das Feld 1 lautet %d \n"
2
        "Das Feld 2 lautet %d \n"
3
        "Das Feld 3 lautet %d \n", Testarray[0], Testarray[1], Testarray[2]);


und ja, es ist mir egal wie alt dioese Beitrag ist! auch andere Anfänger 
werden auf diesen threat treffen!

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Ramon schrieb:
> auch andere Anfänger
> werden auf diesen threat treffen!

Von welcher Bedrohung sprichst du?

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Michael Reinelt schrieb:
> Von welcher Bedrohung sprichst du?

 Parkinson ?

von Rolf M. (rmagnus)


Lesenswert?

Und was genau ist

Ramon schrieb:
> falsch

? Bis auf die erste Antwort scheinen mir alle korrekt zu sein. Es ist 
wenig hilfreich, da einfach pauschal mit einem

Ramon schrieb:
> falsch

zu antworten und dann was hinzuschreiben, das sich von den Vorschlägen 
davor im Prinzip nicht unterscheidet.

: Bearbeitet durch User
von Ramon (Gast)


Lesenswert?

jede Zeile muss mit " oder \ beendet werden.
Bei dem Beispiel
1
printf("abc %d "
2
          "def%c",
3
          15,
4
          'g');

ist das aber nicht der Fall...das komma hinter dem ", ist 
falsch..zumindest funktioniert es bei zwei meiner Compiler so nicht und 
in den Büchern die ich hier habe steht ebenfalls " oder \ am Ende 
keinesfalls.., oder einach einen Zeilenumbruch

von Sebastian W. (wangnick)


Lesenswert?

Ramon schrieb:
> jede Zeile muss mit " oder \ beendet werden.
> Bei dem Beispiel
> printf("abc %d "
>           "def%c",
>           15,
>           'g');
>
> ist das aber nicht der Fall...das komma hinter dem ", ist
> falsch..zumindest funktioniert es bei zwei meiner Compiler so nicht und
> in den Büchern die ich hier habe steht ebenfalls " oder \ am Ende
> keinesfalls.., oder einach einen Zeilenumbruch

So ein Unsinn. Was du sagst gilt nur innerhalb von 
Zeichenketten-Tokens. In den Beispielen wird die Zeile jedoch zwischen 
den Tokens umgebrochen, und das ist völlig legal. Lies noch mal 5.1.1.2, 
"Translation phases", in 
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf etwas genauer. 
Nach Schritt 7 sind alle new-lines verschwunden und die Tokens 
separiert.

LG, Sebastian

von Ramon (Gast)


Lesenswert?

ah ok, jetzt funktioniert doch?!
Ok, ok,  Du hast recht... :-)

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.