# Zeichen von der Tastatur einlesen - zeichenweise?



## alphaChill (30. November 2010)

Hallo,

weiß jemand, wo ich infos zum dem Thema "Zeichen zeichenweise von der Tastatur einlesen" herbekomme oder kann es mir jemand sogar erklären?

Habe hier ein paar Codeschnippsel, die ich allerdings nicht wirklich irgendetwas zuordnen kann:

```
fgetc(FILE* fp);
charc = fgetc(fp);
while((c = fgetc(fp)) != EOF) printf("%c", c);
fputc(intzeichen, FILE *fp);
fputc(c, fp);
```

Was macht "fgetc"?
Es gibt einen Datentyp "FILE"?

Stehe etwas auf dem Schlauch


----------



## Bratkartoffel (30. November 2010)

Hi,

FILE ist kein Datentyp an sich, sondern eher ein struct mit mehreren Feldern.
fgetc() liefert aus einer Datei ein Zeichen.

Dein Codeschnipsel liest eine Datei aus und gibt den Inhalt Zeichen für Zeichen auf dem Bildschirm aus.

Um von der Standardeingabe (Tastatur quasi) zu lesen, gibt es die getchar() Funktion, mehr steht hier.

Gruß
BK


----------



## alphaChill (30. November 2010)

Danke schonmal für deine Antwort!

In deinem für "FILE" angegeben Link wird erwähnt in welcher Header-Datei man das struct unter Linux findet, gibt es da auch ein Pendant unter Windows (7)?


----------



## RudolfG (30. November 2010)

alphaChill hat gesagt.:


> ..., gibt es da auch ein Pendant unter Windows (7)?



Guck mal hier: http://www2.hs-fulda.de/~klingebiel/c-stdlib/stdio.htm

Gruß
RudolfG


----------



## Trulleberg (30. November 2010)

FILE ist ein Typ aus dem ANSI C Standard und ebenso ein Typ wie andere, dass er eine Struktur ist, ist völlig irrelevant, er bleibt ein Typ.
FILE ist im ANSI C Standard-Header <stdio.h> deklariert, insofern erübrigt sich deine Frage Linux/Windows, ANSI C ist ANSI C sowohl in Linux, Windows oder sonstwo, wo ein ANSI C Compiler vorliegt.
Ein Beispiel für standardkonformes zeichenweises Einlesen eines Zeichens von der Tastatur wäre:

```
#include <stdio.h>
...
int c;
...
c=getchar(); while( c!=EOF && c!='\n' && getchar()!='\n' );
/* while-Schleife sehr wichtig, hier wird der Eingabepuffer standardkonform gelöscht was Probleme bei folgenden Eingaben verhindert */
printf("\ngelesenes Zeichen: %c -- ASCII-Wert des Zeichens: %d",c,c);
```


----------

