我想寫一個C程序,它將讀取5個整數的50行的最大值,並在到達stdin結束後打印它們。C - 閱讀和2d int數組終止0直到輸入結束
#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");
}
}
問題是,不管我怎麼試着告訴程序,主程序中的無限循環都需要結束,它永遠不會。我真的需要理解達到輸入結束的概念,這就是爲什麼我不想簡單地寫一個循環,在一定量的迭代之後完成,我想了解如何在達到stdin結束後打破循環。
你嘗試輸入EOF字符? CTRL + D(或在Windows上CTRL + Z) – StoryTeller
你認爲'stdin'的'eof'是什麼?在linux上,你應該使用CTRL + D來觸發它。 – LPs
http://unix.stackexchange.com/questions/16333/how-to-signal-the-end-of-stdin-input – Amarildo