fill shape with C
我写了一个程序,用星号填充闭合的数字。出于某种原因,它不接受sentinel值eof(ctrl-d)。为什么会这样?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #include"usefunc.h" #define height 100 #define width 100 void showRow(int numbers[], int size_numbers) { int i; printf("["); for (i = 0; i < size_numbers-3; i++) { printf("%c,", numbers[i]); } printf("%c ]", numbers[size_numbers-3]); printf(" "); } void showshape(int shape[][width], int lines, int max_buf) { int i, j; for (i = 0; i < lines; i++) { for (j = 0; j < max_buf; j++) { printf("%c", shape[i][j]); } printf(" "); } } void fill(int row[][width], int rownum, int end) { int i, c = 1, inside = 0; for (i = 0; i < end; i++) { if (row[rownum][i] == '*') { c++; } if (!(c%2)) inside = 1; else inside = 0; if (inside) { row[rownum][i] = '*'; } } } int main () { int shape[height][width], i = 0, j = 0, lines = 0; int sentinel = 0; int temp = 0; while (sentinel != EOF) { while ((temp = getchar()) != ' ') { sentinel = temp; shape[i][j] = temp; j++; } i++; lines++; } for (i = 0; i < lines; i++) { fill(shape, i, width); } fill(shape, 0, j); //for (i = 0; i < lines; i++) showshape(shape, lines, j+2); } |
好的,刚刚更新了代码。这个盒子印的不太好。发生什么事??
代码的另一个更新。这次我复制了温度值。但是,我得到了
你想要:
1 | int temp; |
EOF是一个整数值,而不是字符。
1 2 3 4 5 |
我怀疑一旦到达
而且,尼尔·巴特沃思在回答中所说的话是非常明智的。