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''。如果是這樣,跳出循環。 –