0
我在C中创建了一个生活程序游戏,问题是从我的一个函数中的文本文档读取时,如果有空行,上一行将不会重复。fgets()在从空行读取时重复以前的字符串
例如,给定的
x
x
x
x
输出给我,作为起点产生的输入,
x
x
x
x x
下面是代码:
FILE *f;
int i, j, k;
char s[100];
f = fopen (input, "r");
for (j=0; j<height; j++) {
if(fgets (s, 100, f) != NULL && (s[0] != '\r' && s[0] != '\n'))
{
for (i=0; i<width; i++) {
board[i][j] = s[i] == 'x';
}
}
}
fclose (f);
使用前if语句,输出将会是
x
x
x
x
x x
x x
x x
x x
x x
'为(I = 0; I <宽度;我++)'即循环是错误的。如果看到换行符(''\ n'')或NUL(''\ 0'')字符,则需要停止。 – kaylum
这就是if语句的用处。问题是,来自第3行的s [4]被保留在第5行(由于之间的空行),我不知道为什么。 – Milos
@Milos,这就是为什么你需要检查's [i]'是''\ n''还是''\ r''或''\ 0''。如果是这样,跳出循环。 –