我正在編寫用於編碼字符的小程序,而且在閱讀NUL字符時也可能會遇到其他問題。我的問題是,代碼中的getchar忽略CTRL + @輸入的NUL字符。爲什麼getchar()在這兩種情況下的工作方式不同?
while ((numberOfRead < 40) && (character = getchar()) && (character != EOF) && (character != '\n')) { ... }
但這個代碼正常工作,正確讀取NULL字符。
character = getchar();
while ((numberOfRead < 40) && (character != EOF) && (character != '\n')) {
numberOfChars++;
...
character = getchar();
}
導致問題的區別是什麼?謝謝你對這種行爲的任何解釋。代碼是在Windows 8.1測試,在GCC 4.7.1
這就是爲什麼你應該避免在條件內賦值,使得編寫錯誤非常容易。 – Lundin
^^^倫丁說的是什麼。我看起來很聰明,很酷,但實際上並沒有工作:(簡單,一次一個代碼,看似可避免的中間變量等導致工作,或者至少可調試,代碼複雜,複合布爾表達式導致帖子到SO :( –
我很喜歡在這個條件下使用這個任務的想法,這是因爲我在最近閱讀過的K&R中的很多例子:) – c0ntrol