我有去在if語句,代碼應在c輸入一個問題:不進入if語句
void getInput(void)
{
static size_t _read = 0;
memset(line, 0, _read);
do{
memset(line, 0, _read);
write(STDOUT_FILENO, ">> ", 3);
_read = read(STDIN_FILENO, line, MAXLINE - 1);
if (line[0] == '\n' || line[0] == '\r')
continue;
}while(line[_read - 1] != '\n');
line[_read] = '\0';
}
的問題是在該行「如果(行[0] ==「\ n'|| line [0] =='\ r')「這裏是調試器的摘錄。
getInput() at main.c:29
29 if (line[0] == '\n' || line[0] == '\r')
1: line[0] = 10 '\n'
(gdb) step
31 }while(line[_read - 1] != '\n');
1: line[0] = 10 '\n'
(gdb) list 29
24 memset(line, 0, _read);
25 do{
26 memset(line, 0, _read);
27 write(STDOUT_FILENO, ">> ", 3);
28 _read = read(STDIN_FILENO, line, MAXLINE - 1);
29 if (line[0] == '\n' || line[0] == '\r')
30 continue;
31 }while(line[_read - 1] != '\n');
32 line[_read] = '\0';
33 }
正如您所看到的,它不會進入continue語句,而是直接進入while語句。我確實認爲繼續會發生在while語句中,但我仍然不明白爲什麼它沒有先行繼續。
感謝
呀看來問題由於多數民衆贊成 – Daniel 2011-04-01 13:02:16