我正在通过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