www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit printf


Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: g0nz00 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
printf("%i, %d, %f",  
      5,
      7,
      6.7);

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

Autor: Stefan (Gast)
Datum:

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

  

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähm richtig lesen, Stefan, genau so soll es nicht sein!
   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
         );

  

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht 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');

Autor: Simon K. (simon) Benutzerseite
Datum:

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

Selbstgespräche? ;)

Autor: Ramon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
falsch,
richtig geht es so
printf("Das Feld 1 lautet %d \n"
        "Das Feld 2 lautet %d \n"
        "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!

Autor: Michael Reinelt (fisa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ramon schrieb:
> auch andere Anfänger
> werden auf diesen threat treffen!

Von welcher Bedrohung sprichst du?

Autor: Marc Vesely (Firma: Vescomp) (logarithmus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Reinelt schrieb:
> Von welcher Bedrohung sprichst du?

 Parkinson ?

Autor: Rolf Magnus (rmagnus)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Ramon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Sebastian Wangnick (wangnick)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ramon (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.