2014-06-05 43 views
0

我繼續使用經典K & R書籍「The C Programming Language」,第二版。C編程語言練習1.5.4(在編碼中發現編輯錯誤?)

SCENE。

我在第22頁關於字數統計的練習輸出出現了問題。沒有獲得所需的輸出。

問題。

最後我覺得在代碼語法中發現了一個錯誤?

代碼FRON ORIGINAL PDF。

練習說(複製和粘貼PDF):

1.5.4單詞統計的第四個在我們的系列有用的程序計算行數,字數和字符,與寬鬆的定義,一個字 任何不包含空白,製表符或換行符的字符序列。這是UNIX程序wc的一個簡單版本。

#include <stdio.h> 

#define IN 1 /* inside a word */ 
#define OUT 0 /* outside a word */ 

/* count lines, words, and characters in input */ 
main() 
{ 
    int c, nl, nw, nc, state; 

    state = OUT; 
    nl = nw = nc = 0; 
    while ((c = getchar()) != EOF) { 
     ++nc; 
     if (c == '\n') 
      ++nl; 
     if (c == ' ' || c == '\n' || c = '\t') 
      state = OUT; 
     else if (state == OUT) { 
      state = IN; 
      ++nw; 
     } 
    } 
    printf("%d %d %d\n", nl, nw, nc); 
} 

CHANGE NEDED工作

凡說:

if (c == ' ' || c == '\n' || c = '\t') 

沒有必要說什麼?

if (c == ' ' || c == '\n' || c == '\t') 

請。

如果我的評估是正確的。稍後會在第23頁中出現相同的錯誤,解釋該行。

確認需要。

它告訴我究竟是什麼邏輯,但它似乎如此令人難以置信,這個錯誤是在這樣的書。我需要一個確認,會有這個怪事。

非常感謝soo爲您的意見。

添加到用戶Rohan請求:

2行有什麼區別?讓問題更清楚。 - 羅漢33分鐘前。

回答羅漢:

你好,感謝問題。 In C

例如,x = 5用於向變量x賦值5。

但是,如果你想要的是檢查等號是正確的==

如果x == 5說,如果x等於5 ...

正如你可以看到這本書被賦予C =「\ t」

這是沒有意義的,並給我的錯誤

「如果c等於標籤」是if (c == '\t')凡\ t是TAB鍵。

我希望我已經澄清了一些疑問

並感謝要求

您可以檢查http://www.tutorialspoint.com/cprogramming/c_operators.htm

從中可以看出:

==檢查是否兩個值操作數是否相等,如果是,則條件成立。

(A == B)不正確。

+1

2行有什麼區別?讓問題更清楚。 – Rohan

+1

是的,你的假設是正確的,errare humanum est;) –

回答

0

是的,您在評估中認爲=需要替換爲==纔是正確的。

錯別字發生,甚至在書本上,甚至以K & R.

不過,你提到你直接從PDF複製的代碼。該PDF很可能來自一本書的OCR,而OCR軟件遠非完美,所以錯誤可能會發生。

+0

贏了,感謝您的快速回復,我有從ebay紙質書,並有同樣的錯誤。我檢查它並在Google中查找PDF以將代碼粘貼到此處以跳過任何輸入錯誤(由我執行)。 – jsampedro

+0

NP。是的,就像我說的,這樣的東西確實發生在實際的印刷書籍中,而且我看到充滿錯誤的PDF文件,所以我需要始終保持在腳趾上。 – dandan78

+0

據我所知,在其他書籍中有這樣的錯誤,但在像這樣的編程錯誤的書中,這種類型的編程錯誤可能會讓你瘋狂,除了對我崇拜K&R的兩個人缺乏尊重。出版商的審閱者。 – jsampedro