我在做K & R書。 如果我檢查一個==,那麼一切正常,但如果我檢查!=,則不打印直方圖。 這工作來自K&R的Exersice 1-13
while((c = getchar()) != EOF )
{
if(c == ' ' || c == '\t' || c =='\n')
{
state = OUT;
if(wc>0)
++numOfWords[wc];
wc = 0;
}
else
if(state == OUT)
state = IN;
if(state = IN)
++wc;
}
但改變的,如果部分,這並不:
if(c != ' ' || c != '\t' || c !='\n'){
if(state == OUT){
state = IN;
++wc;}
else
++wc;
}
else
{
state = OUT;
if(wc>0)
++numOfWords[wc];
wc = 0;
}
}
我想每一個字符不是一個選項卡或空格或換行。所以我寫了c != '\t' || c!= ' ' || c!= '\n'.
,我認爲它的意思是 If c is not (!=) space(' ') then its 1(true) OR(||) if c is not (!=) tab('\t') then its 1 OR(||) ...so on.
如果任何一個OR語句是真的,那麼整個語句是真的,並且正文應該執行,那爲什麼它不執行呢?
感謝您注意第一小節中的錯字,我糾正了它,但我想問的是爲什麼第二小節不起作用?
答: 這完美的作品!
if(c != ' ' && c != '\t' && c !='\n' && c != '"' && c!= '.' && c != ','){
if(state == OUT){
state = IN;
++wc;}
else
++wc;
}
else
{
state = OUT;
if(wc>0)
++numOfWords[wc];
wc = 0;
}
'if(state = IN)'也是錯的 –
基本上我想要一個過濾器。如果你不是一個空間,進入正確的位置,那麼如果你不是一個標籤來進一步等等? – aamermoquim
@aamermoquim;我不明白你與什麼混淆? – haccks