was macht diese Zeile? (PRINTF)

Gast #1041759
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
Gast #1041782
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. ;-)
Persönliche Seite #1041807
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.
Gast #1042094
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren