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


von Smart (Gast)


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

von Smart (Gast)


Lesenswert?

weiß das hier keiner..?

von Michael L. (Gast)


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/FUNCTIONS/format.html

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-Hall-Software/dp/0131103628/ref=sr_1_1?ie=UTF8&s=books-intl-de&qid=1226235753&sr=8-1


Gruß,
  Michael

von Uwe .. (uwegw)


Lesenswert?

Das steht in der Dokumentation zu deiner Standardbibliothek.

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

von yxcv (Gast)


Lesenswert?

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

von Struwwelpeter (Gast)


Lesenswert?

GiDF

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

yxcv wrote:
> Nur so als Randnotiz. Der Befehl ist unnötig lang, folgendes geht
> ebenso:
>
1
printf(cBuffer)
> Wobei ein anständiger Compiler das wohl immer in den puts-Befehl
> optimiert/vereinfacht.
>
1
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.

von Held (Gast)


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?

von Johannes S. (johanness)


Lesenswert?

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

von tata (Gast)


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:
1
  char testChar1[10]="Test";
2
  char testChar2[10];
3
  testChar2[0]=49;
4
5
  puts(testChar1);
6
  puts(testChar2);
7
  printf(testChar1);
8
  printf(testChar2);
Gibt folgendes aus:
1
Test
2
1  8  est
3
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.

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.