Ich weiß, dass fileno
den Dateideskriptor mit dem hier sdtin
zugeordnet zurückzukehren,
Ja, obwohl ich Sie vermuten, wissen nicht, was das bedeutet.
dann read
setzen Sie diesen Wert in i
Variable.
Nein Nein Nein Nein Nein Nein. read()
nicht setzen Sie den Wert des Dateideskriptors oder einen Teil davon in den bereitgestellten Puffer (in Ihrem Fall die Bytes von i
). Wie der Name vermuten lässt, versucht read()
von die Datei durch den Dateideskriptor als sein erstes Argument übergeben zu lesen. Die gelesenen Bytes werden, falls vorhanden, in dem bereitgestellten Puffer gespeichert.
stdin
steht für die Standardeingabe des Programms. Wenn Sie das Programm über eine interaktive Shell ausführen, entspricht dies Ihrer Tastatur. Das Programm versucht, Benutzereingaben zu lesen und sie mit einem Zeilenumbruch zu vergleichen.
Das Programm ist wahrscheinlich fehlerhaft und vielleicht völlig falsch, obwohl es unmöglich ist, nur aus dem Fragment zu erkennen. Wenn i
eine Variable vom Typ int
ist, dann ist ihre Darstellung größer als ein Byte, aber Sie lesen nur ein Byte hinein. Dadurch wird nur ein Byte der Darstellung ersetzt, wobei die Ergebnisse von der C-Implementierung und den gelesenen Daten abhängen.
Was scheint das Programm zu versuchen, gemacht zu tun ist mit read()
zu arbeiten, aber ich würde empfehlen, getchar()
statt mit:
#include <stdio.h>
/*
...
int i;
...
*/
i = getchar();
/* ... */
Wissen Sie, was die 'read' Funktion tut? Stellen Sie sich den Aufruf "read" im gezeigten Code vor, um einen ungepufferten 'getchar' oder' getc' oder 'fgetc' aus' stdin' zu erstellen. Wäre Ihre Frage dann sinnvoll, wenn es z. 'getchar' das wurde anstelle von' read' verwendet? –
Tut mir leid, ich habe gerade meinen Beitrag aktualisiert – HolyGraal
Der Typ von 'i' muss' char' (oder 'signed char' oder' unsigned char') sein, und das nächste ungelesene Byte in der Eingabe muss ein Newline sein. –