06.10.2013 Aufrufe

Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke

Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke

Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />

21.1 Die Standardkanäle std<strong>in</strong>, stdout <strong>und</strong> stderr<br />

Es gibt drei Dateien, <strong>die</strong> immer geöffnet s<strong>in</strong>d: std<strong>in</strong>, stdout <strong>und</strong> stderr. stdout <strong>und</strong><br />

stderr s<strong>in</strong>d normalerweise mit dem Bildschirm verb<strong>und</strong>en, std<strong>in</strong> ist mit der Tastatur verb<strong>und</strong>en.<br />

Alle IO-Funktionen (wie pr<strong>in</strong>tf, getchar, puts...) welche ke<strong>in</strong> Dateiobjekt erwarten, benutzen<br />

implizit <strong>die</strong>se Dateien. Zum Beispiel hat fpr<strong>in</strong>tf(stdout, "Hallo") den selben Effekt wie<br />

pr<strong>in</strong>tf("Hallo").<br />

21.2 Beispiele<br />

Beispiel für <strong>die</strong> Arbeit mit Textdateien<br />

Das folgende Programm öffnet <strong>die</strong> Datei Test.txt, liest deren Inhalt zeilenweise <strong>und</strong> schreibt <strong>die</strong><br />

gelesenen Zeilen mit vorangestellter Zeilennummer <strong>in</strong> <strong>die</strong> Datei Test.out.<br />

#<strong>in</strong>clude <br />

#<strong>in</strong>clude <br />

<strong>in</strong>t ma<strong>in</strong>(<strong>in</strong>t argc, char *argv[])<br />

{<br />

char *InputFileName = "test.txt";<br />

char *OutputFileName = "test.out";<br />

FILE *InputFile, *OutputFile;<br />

}<br />

/* Dateien oeffnen <strong>und</strong> auf Fehler Pruefen */<br />

InputFile = fopen(InputFileName, "r");<br />

if (InputFile != NULL) {<br />

OutputFile = fopen(OutputFileName, "w");<br />

if (OutputFile != NULL) {<br />

<strong>in</strong>t ZeilenNummer = 1;<br />

/* Solange das Dateiende nicht erreicht ist */<br />

while (!feof(InputFile)) {<br />

char Buffer[200];<br />

}<br />

/* Zeile e<strong>in</strong>lesen... */<br />

if (fgets(Buffer, 200, InputFile) != NULL) {<br />

/* ...<strong>und</strong> mit vorangestellter Zeilennummer wieder ausgeben */<br />

fpr<strong>in</strong>tf(OutputFile, "%04d: %s", ZeilenNummer, Buffer);<br />

}<br />

ZeilenNummer++;<br />

/* Dateien wieder schliessen */<br />

fclose(OutputFile);<br />

} else {<br />

pr<strong>in</strong>tf("Sorry, could not open '%s' for write\n", OutputFileName);<br />

pr<strong>in</strong>tf("Errorcode was %d\n", errno);<br />

perror("Errormessage: ");<br />

}<br />

fclose(InputFile);<br />

} else {<br />

pr<strong>in</strong>tf("Sorry, could not open '%s' for read\n", InputFileName);<br />

pr<strong>in</strong>tf("Errorcode was %d\n", errno);<br />

perror("Errormessage: ");<br />

}<br />

system("PAUSE");<br />

return 0;<br />

Gedruckt am 11.09.2008 13:04:00 Letzte Änderung am: 11. September 2008 Version 2.4, I. Oesch 85/147

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!