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
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
Das steht in der Dokumentation zu deiner Standardbibliothek. cBuffer wird als (Zeiger auf eine) Zeichenkette interpretiert und auf die Standardausgabe ausgegeben.
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. ;-)
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.
>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?
Geht halt auf die Standardausgabe. Ob das eine Datei, ein Bildschirm oder die serielle Schnittstelle ist, das sieht man hier nicht.
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.