mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik was macht diese Zeile? (PRINTF)


Autor: Smart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir jemand sagen, was diese Zeile macht und wo ich nachlesen kann, 
welche Zeichen (%s) was bedeuten?

printf("%s",cBuffer)


vielen Dank an alle
gruss

Autor: Smart (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
weiß das hier keiner..?

Autor: Michael Lenz (hochbett)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Smart,

> Kann mir jemand sagen, was diese Zeile macht und wo ich nachlesen kann,
> welche Zeichen (%s) was bedeuten?
>
> printf("%s",cBuffer)

Der Befehl interpretiert den Inhalt des Pointers "cBuffer" als String 
(%s) und gibt ihn auf dem Bildschirm aus.

Wenn es nur um die formatierte Ausgabe geht, kannst du hier nachschauen:
http://home.fhtw-berlin.de/~junghans/cref/FUNCTION...

Ein kostenloser C-Kurs ist:
http://www.rzbt.haw-hamburg.de/dankert/c_tutor.html/

Ein sehr bekanntes Standardwerk für die Programmierung in Ansi-C ist:
http://www.amazon.de/Programming-Language-Prentice...


Gruß,
  Michael

Autor: Uwe ... (uwegw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das steht in der Dokumentation zu deiner Standardbibliothek.

cBuffer wird als (Zeiger auf eine) Zeichenkette interpretiert und auf 
die Standardausgabe ausgegeben.

Autor: yxcv (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur so als Randnotiz. Der Befehl ist unnötig lang, folgendes geht 
ebenso:
printf(cBuffer)
Wobei ein anständiger Compiler das wohl immer in den puts-Befehl 
optimiert/vereinfacht.
puts(cBuffer)
Aber eine Bitte an dich, lies ein Tutorial. ;-)

Autor: Struwwelpeter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
GiDF

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
yxcv wrote:
> Nur so als Randnotiz. Der Befehl ist unnötig lang, folgendes geht
> ebenso:
>
printf(cBuffer)
> Wobei ein anständiger Compiler das wohl immer in den puts-Befehl
> optimiert/vereinfacht.
>
puts(cBuffer)
> Aber eine Bitte an dich, lies ein Tutorial. ;-)

Das ist nicht das gleiche. Die Zeile des OP macht im Endeffekt ein puts, 
aber was gibt deine erste Version mit printf aus, wenn cBuffer den 
Inhalt "%d" hat? Das schmiert ab, weil printf ein Argument vom stack 
liest, wo keines ist.

Autor: Held (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Der Befehl interpretiert den Inhalt des Pointers "cBuffer" als String
>(%s) und gibt ihn auf dem Bildschirm aus.
und wenn das System keinen Bildschirm hat du Superheld?

Autor: Johannes Slotta (johanness)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geht halt auf die Standardausgabe. Ob das eine Datei, ein Bildschirm 
oder die serielle Schnittstelle ist, das sieht man hier nicht.

Autor: tata (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das ist nicht das gleiche. Die Zeile des OP macht im Endeffekt ein puts,
> aber was gibt deine erste Version mit printf aus, wenn cBuffer den
> Inhalt "%d" hat? Das schmiert ab, weil printf ein Argument vom stack
> liest, wo keines ist.
Danke für die Info, wusste ich noch gar nicht, aber irgendwie fällt 
beides auf die Nase:
  char testChar1[10]="Test";
  char testChar2[10];
  testChar2[0]=49;

  puts(testChar1);
  puts(testChar2);
  printf(testChar1);
  printf(testChar2);
Gibt folgendes aus:
Test
1  8  est
Test1  8  est
Was schwer nachdem selben Schrott aussieht, der Strint "Test" geht 
immer, aus dem int 49 wird eine ASCCI-'1', die Verschiebung um 48 halt 
und puts legt halt nur von sich aus immer einen Zeilenumbruch ans Ende. 
Ansonsten gibt puts und printf "1  8  "aus. Sowas habe ich auch noch nie 
getestet.

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.