was macht diese Zeile? (PRINTF)

Gast
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
Gast
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. ;-)
Persönliche Seite
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.
Gast
>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?
Gast
> 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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.