read() stdin in c?

Ich habe eine kurze kleine Frage mit der read() Befehl.

Ich bin echt eingerostet in C, und leider ist mein Aktueller Auftrag hat mich die Programmierung in C.
Wir benötigen zum Lesen von stdin, mit der read () - und nicht fgets und dergleichen.

Also habe ich eine einfache while-Schleife:

int n, i;
char buffer[257], *input;

while((n=read(fileno(stdin), buffer, 256)) > 0)
                {
                        buffer[n] ='\0';
                        if(buffer[n] = '\n') break;
                        write(input, buffer, strlen(buffer));
                }

So, ich bin nicht sicher, wie man diese Schleife stoppen beim drücken von enter (Ende der Zeile), so dass ist, warum ich den break-code, aber ich weiß nicht, ob das richtig ist vollbracht.

Das ganze Ziel versuche ich zu erreichen, wird die Eingabe von stdin in der Zeiger 'input'

(Ich bin wirklich schlecht im Verständnis Zeiger so mit mir tragen 🙂 )

Mein problem ist, dass ich immer speicherzugriffsverletzungen, wenn ich drücken Sie die EINGABETASTE.
Ich wünschte, ich könnte die Verwendung der Funktion fgets denn dann würde all dies gelöst werden, mit einem einfachen

input = fgets(buffer, 256, stdin);

Verflixte Hausaufgaben 🙁
Sowieso, wenn jeder von Euch könnte mich in die richtige Richtung, ich würde es wirklich schätzen. Danke!

  • if(buffer[n] = '\n') break; Ich denke, dass Sie bestimmt if(n && buffer[n-1] == '\n') break; ( oder vielleicht sogar if(n==1 && buffer[n-1] == '\n') break;. Auch write(input, buffer, strlen(buffer)); ersetzt werden könnte durch write(input, buffer, n);
  • Ihr code ist wie x = 1; if (x == 0) { /*...*/ }. Erkennen Sie das problem?
InformationsquelleAutor Nick | 2012-03-07
Schreibe einen Kommentar