read (C++)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu io.h - Index


Header-Datei

io.h

Kategorie

Eingabe-/Ausgaberoutinen

Prototyp

int read(int handle, void *buf, unsigned len);

Beschreibung

Liest aus einer Datei.

Die Funktion read liest len Bytes aus der Datei, die mit handle verknüpft ist, in den Puffer ein, auf den buf zeigt.

Bei im Textmodus geöffneten Dateien entfernt read Wagenrücklaufzeichen und meldet das Erreichen des Dateiendes, wenn ein Ctrl-Z gelesen wird.

Das Argument handle enthält ein Datei-Handle, das durch einen Aufruf von creat, open, dup oder dup2 abgerufen wird.

Bei Datenträgerdateien beginnt read beim aktuellen Dateizeiger zu lesen. Nach Abschluss des Lesevorgangs wird der Dateizeiger um die Anzahl gelesener Bytes erhöht. Bei Geräten werden die Bytes direkt aus dem Gerät gelesen.

Die Funktion read kann höchstens UINT_MAX -1 Bytes lesen, weil UINT_MAX gleichbedeutend mit -1 ist, dem Rückgabewert im Fehlerfall. UINT_MAX ist in limits.h definiert.

Rückgabewert

Bei erfolgreicher Ausführung gibt read eine Ganzzahl zurück, die die Anzahl der in den Puffer eingefügten Bytes angibt. Wenn die Datei im Textmodus geöffnet wurde, werden Wagenrücklauf- oder Ctrl-Z-Zeichen nicht in die Anzahl gelesener Bytes einbezogen.

Wenn das Dateiende erreicht wurde, gibt read 0 zurück. Bei einem Fehler gibt read - 1 zurück und weist der globalen Variablen errno einen der folgenden Werte zu:

EACCES

Permission denied (Zugriff verweigert)

EBADF

Bad file number (Falsche Dateinummer)


Beispiel

#include <stdio.h>
#include <io.h>
#include <alloc.h>
#include <fcntl.h>
#include <process.h>
#include <sys\stat.h>;
int main(void)
{
   void *buf;
   int handle, bytes;
   buf = malloc(10);
/*
Sucht im aktuellen Verzeichnis nach einer Datei namens TEST.$$$ und versucht, 10 Bytes daraus zu lesen. Sie müssen die Datei TEST.$$$ erstellen, um dieses Beispiel ausführen zu können.
 */
   if ((handle =
      open("TEST.$$$", O_RDONLY | O_BINARY, S_IWRITE | S_IREAD)) == -1)
   {
      printf("Error Opening File\n");
      exit(1);
   }
   if ((bytes = read(handle, buf, 10)) == -1) {
      printf("Read Failed.\n");
      exit(1);
   }
   else {
      printf("Read: %d bytes read.\n", bytes);
   }
   return 0;
}

Portabilität

POSIX Win32 ANSI C ANSI C++

+

+