frpintf problem

G

glenda

Ich arbeite gerade mit fremdem Code und bin mit C nicht wirklich vertraut.

Vielleicht kann mir hier jemand sagen was folgender fprintf Aufruf genau macht.
Ich steig da nicht dahinter. Leider kompiliert der Code nicht, darum kann ich es nicht testen. Wie schaut die Ausgabe aus?

Code:
char *s, *p;
....
....

fprintf(1, "%.*s", p-s, p);
 
Die "1" in fprintf() soll für stdout stehen. Aber das funktioniert nicht, weil fprintf() ein FILE* erwartet. Daher crasht das.

Der Format-String ist sehr ausgefallen: Das "s" steht für die String-Ausgabe, das zugehörige Argument ist p. "%.*" steht für die "Präzision", im Falle eines String für die maximale Länge des auszugebenden Teilstrings. Das Argument dazu, p-s ist ein (eher seltener) zeiger-arithmetischer Ausdruck, dessen Resultat die Anzahl der Datenelemente "zwischen" den beiden Zeigern. Dazu müssen diese allerdings korrekt initialisiert werden. (siehe hier)

Was hier wahrscheinlich erreicht werden soll ist, einen Teilstring auszugeben.
 
Zuletzt bearbeitet:

Ähnliche Themen

Unix Webserver mit HTML Seite erstellen

Verständnisfrage zu RegExps

KSH: Problem beim Umleiten des Fehlerkanals

Queue für copy Script

Aufgabe in C

Zurück
Oben