• Keine Ergebnisse gefunden

Grundlagen der Programmierung in C

N/A
N/A
Protected

Academic year: 2021

Aktie "Grundlagen der Programmierung in C"

Copied!
5
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Grundlagen der

Programmierung in C

File I/O

Wintersemester 2005/2006 G. Zachmann

Clausthal University, Germany zach@in.tu-clausthal.de

Erinnerung: stdin / stdout / stderr

 Jeder Prozeß hat stdin, stdout, stderr

 Normalerweise verbunden mit Tastatur bzw. Terminalfenster

 Oder durch Redirection verbunden mit Files!

stderr kommt weiterhin im Terminal raus Program Standard Input

(stdin) Standard Output

(stdout)

Standard Error (stderr)

% program parameters < infile > outfile

(2)

G. Zachmann Grundlagen der Programmierung in C - WS 05/06 File I/O, 3

Ausgabe auf stdout

 Einzelnes Zeichen:

 Eine Zeile:

 Formatiert:

 Befinden sich in der sog. libc (C standard library, glibc);

wird immer automatisch dazugelinkt

putchar('x');

char c; ...; putchar(c);

puts("text");

puts( zeiger-auf-string );

printf( "format-string", arg1, arg2, … );

G. Zachmann Grundlagen der Programmierung in C - WS 05/06 File I/O, 4

Der Format-String

 Normale Zeichen und mit % eingeleitete Formatierungsanweisung

 Korrespondenz zwischen %-Anweisung und Argumenten:

 Häufige %-Formatangaben:

printf( "Blub %· Bla %· Blubber …", arg1, arg2, … );

%d int

%u unsigned int

%f float oder double

%c char

%s string

%x Hexadezimal-Zahl

%-Angabe Formatierung

(3)

G. Zachmann Grundlagen der Programmierung in C - WS 05/06 File I/O, 7

New-line

 Codiert durch spezielles Zeichen: \n

 Beispiele:

printf("Bla %d\n", x );

printf("blub %f\n"

"blubber %f\n", f1, f2 );

Lesen von stdin

 Einzelnes Zeichen

 Ganze Zeile

 Formatiert

Formatstring (fast) wie bei printf

Achtung: am Schluß niemals \n lesen wollen!

char c; ...; c = getchar();

gets( zeiger-auf-string );

scanf( "format-string", arg1, arg2, … );

(4)

G. Zachmann Grundlagen der Programmierung in C - WS 05/06 File I/O, 9

Beispiele zu scanf

 3 Floats einlesen:

 Space im Formatstring matcht beliebig viele Whitespaces!

 Verwendung:

Von Tastatur einlesen:

Mit I/O-Redirection aus File lesen:

printf("Geben Sie den Vektor ein: ");

float v1, v2, v3;

scanf( "%f %f %f", &v1, &v2, &v3 );

% program

Geben Sie den Vektor ein: □

% program < vector.txt Geben Sie den Vektor ein:

%

G. Zachmann Grundlagen der Programmierung in C - WS 05/06 File I/O, 10

Interaktives Beispiel zu printf / scanf

 …

(5)

G. Zachmann Grundlagen der Programmierung in C - WS 05/06 File I/O, 11

 Werte lesen bis Input leer:

Man-Page: scanf liefert EOF falls kein Input mehr da

Siehe Man-Page für weitere Fälle!

int i;

int success = scanf("%d", &i );

while ( success == 1 && success != EOF ) {

// do something ...

success = scanf("%d", &i );

}

Sorgt dafür, daß die gelesene Zeichenkette als Int interpretiert wird.

Referenzen

ÄHNLICHE DOKUMENTE

Zachmann Grundlagen der Programmierung in C - WS 05/06 Zusammengesetzte Typen, 3. Das

- Enum-Namen werden fortlaufend numeriert - Erster Enum-Name = 0. enum ColorE { RED, YELLOW, GREEN,

Every set of cards made for any formula will at any future time recalculate that formula with whatever constants may be required. Thus the Analytical Engine

ein Speicherblock ist zu genau einem Objekt (z.B. ein Double) zugeordnet, dieser Block hat genau einen Typ, und es gibt keine Möglichkeit im Programm, diesen Speicherblock als

 Sprache (Interpreter / Virtual Machine) erkennt, wenn Objekt vom Programm nicht mehr zugreifbar ist (kein Zeiger führt mehr darauf).  Garbage-Collector läuft im Hintergrund

 Gebe auch keinen Pointer auf eine lokale static Variable zurück (auch nicht als Out-Parameter).  Return-by-Value macht heute keine Kopie mehr (war früher

alle Members ab private: sind nur in Methoden innerhalb der Klasse sichtbar.

Descriptor FILE * meaning device 0 stdin standard input keyboard 1 stdout standard output terminal 2 stderr standard error terminal These can be redirected on the shell:..