Ich versuche ein Programm in C zu schreiben, das maximal 50 Zeilen mit 5 ganzen Zahlen lesen und nach dem Erreichen von stdin ausgeben kann.C - Reading und 2d int Array mit Zeilen mit 0 bis zum Ende der Eingabe
#include <stdio.h>
#include <stdlib.h>
int readInput(int numbers[][5], int row) {
int x, i = 0;
while (1) {
if (scanf("%d", &x) !=1) exit (1);
if (x == 0) {
return 1;
}
if (feof(stdin)) {
return 0;
}
numbers[row][i] = x;
i++;
}
}
int main (void) {
int numbers[50][5];
int row = 0; int val;
int i,j;
while (1) {
val = readInput(numbers, row);
if (val == 1){
row++;
continue;
} else if (val == 0) {
break;
}
}
for (i = 0; i < row+1; i++) {
for (j = 0; j < 5; j++) {
printf("%d ", numbers[i][j]);
}printf("\n");
}
}
Problem ist, dass, egal wie ich versuche, das Programm zu sagen, dass die Endlos-Schleife in Haupt Bedürfnisse zu Ende, es nie. Ich muss wirklich das Konzept verstehen, das Ende der Eingabe zu erreichen, deshalb möchte ich nicht einfach eine Schleife schreiben, die nach einer bestimmten Anzahl von Wiederholungen endet, ich möchte lernen, wie man die Schleife bricht, nachdem das Ende der Standard erreicht wurde.
zu zeigen Haben Sie versucht, die Eingabe von EOF Charakter? STRG + D (oder STRG + Z auf Windows) – StoryTeller
Was denkst du ist 'eof' von' stdin'? Unter Linux sollten Sie 'CTRL + D' verwenden, um es auszulösen. – LPs
http://unix.stackexchange.com/questions/16333/how-to-signal-the-end-of-stdin-input – Amarildo