我正在通過k & r工作,我正在處理問題1-18。編寫程序以刪除每行輸入中的TRAILING空白和製表符,並刪除完全空白的行。我的想法是讀每行,並計算空格的數量。如果它是使用putchar的第一個空白打印。如果有第二張空白不打印並將空格重置爲0.然後繼續閱讀並移除空格。刪除尾部空白
目前我只是打印其他任何東西,因爲我試圖做一點點。一旦我運行這個程序,我會在終端中獲得其中兩個。我認爲我錯誤地嵌套了if語句或else語句時遇到了問題,之前我有一些錯誤。我是否正確地去除空白的邏輯?如果有人能指出我正確的方向來修復代碼,我將不勝感激。
#include <stdio.h>
main()
{
int c, i, spaces; /*c for input, i for counting*/
i = 0;
c = 0;
spaces = 0;
while ((c = getchar())!=EOF)
if(spaces = 0 && c == ' ')
++spaces;
putchar(c);
if(spaces >= 1)
spaces = 0;
else {
putchar(c);
}
}
我沒有檢查其餘的邏輯,但是這個'if(spaces = 0 && c =='')'應該可以是'if(spaces == 0 && c =='')' 。 '='vs.'==' – Henrik
謝謝,愚蠢的錯誤。將終端中的奇怪問號減少到一個 – bigl
你應該使用getchar()來解決這個問題(而不是讀整行)? – Scooter