Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

getc - Zeichen aus einer Datei einlesen

&pagelevel(4)&pagelevel

Definition

#include <stdio.h>

int getc(FILE *dz);

getc liest ein Zeichen aus der Datei mit Dateizeiger dz von der aktuellen Lese-/Schreibposition.

Returnwert

Gelesenes Zeichen als positiver integer-Wert



bei Erfolg


EOF

bei Fehler oder Dateiende.           

Hinweise

getc ist sowohl als Makro als auch als Funktion realisiert (siehe Abschnitt "Funktionen und Makros“).

Der Aufruf getc(stdin) ist identisch mit getchar.

Wenn Sie in Ihrem Programm einen Vergleich verwenden, wie etwa while((c = getc(dz)) != EOF), dann muss die Variable c immer als integer-Größe vereinbart werden. Wenn Sie c als char definieren, wird die Bedingung EOF aus folgendem Grund nie erfüllt: -1 wird nach char '0xFF' (also +255) konvertiert, EOF ist jedoch als -1 definiert.

Wenn getc von der Standardeingabe stdin liest und EOF das Einlese-Endekriterium ist, erreichen Sie die EOF-Bedingung durch folgende Maßnahmen an der Datensichtstation: Taste K2 drücken, die Systemkommandos EOF und RESUME-PROGRAM eingeben.

Bei Textdateien mit der Zugriffsart SAM und variabler Satzlänge, für die zusätzlich eine maximale Satzlänge angegeben ist, gilt: Wenn bei fopen die Angabe split=no gemacht wurde, werden Sätze maximaler Länge beim Lesen nicht mit dem darauffolgenden Satz verkettet. Standardmäßig oder mit der Angabe split=yes wird beim Lesen eines Satzes mit maximaler Satzlänge angenommen, dass es sich bei dem Folgesatz um die Fortsetzung dieses Satzes handelt, und die Sätze werden verkettet.

Bei Textdateien mit der Zugriffsart SAM oder ISAM liefert getc am Ende eines Satzes ein zusätzliches Neue-Zeile Zeichen ('\n'). In diesem Fall liefert ein anschließender Aufruf von _fnlinserted einen Wert ungleich 0. In allen anderen Fällen liefert ein anschließender Aufruf von _fnlinserted den Wert 0.

Beispiel

Folgendes Programm liest aus einer Datei mit Dateizeiger fp zeichenweise bis Dateiende ein und speichert die Zeichen in einen Bereich buf.x

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
  int c, i = 0;
  char buf[BUFSIZ];
  FILE *fp;
  char name[40];
  printf("Bitte einzulesende Datei eingeben\n");
  scanf("%s", name);
  if(( fp = fopen(name, "r")) == NULL)
    {
    perror("fopen");  /* Abbruch bei nicht vorhandener Datei */
    exit(1);          /* mit Fehlermeldung 'fopen'           */
    }
  while (( c = getc(fp)) != EOF )
    buf[i++] = c;
  puts(buf);
  fclose(fp);
  return 0;
}

Siehe auch

fgetc, getchar, getwc, ungetc, fopen, fopen64, _fnlinserted