用单个空格替换一个或多个空格和/或制表符的每个字符串

时间:2015-01-20 20:00:29

标签: c

所以这是我的代码到目前为止,我试图将多个空格和制表符替换为单个空格。输入是多行,有多个制表符和空格(包括混合制表符和空格句子)。写完这篇文章后我陷入了困境:

#include <stdio.h>
#define NONBLANK 'a'
main(){
int c, lastc;

lastc = NONBLANK;

while (( c = getchar()) !=EOF) {
    if (c != ' ' || lastc !=' '){
        if (c != '\t' || lastc !='\t'){

                putchar(c);
            lastc = c;}

            }
        }   
    }
}

1 个答案:

答案 0 :(得分:0)

问题是getchar()在键入输入时回显输入,通过回显您想要压缩的空格和制表符来使您感到困惑。使用非回显getch()尝试此操作。我没有使用EOF结束,但返回,请按照您的意愿进行实验。

#include <stdio.h>
#include <conio.h>

int main(void)
{
    int c, lastc = -1;
    while ((c = getch()) != '\r') {
        if (c != ' ' && c != '\t'){
            if (lastc == ' ' || lastc == '\t')
                putchar(' ');
            putchar(c);
            }   
        lastc = c;
    }
    return 0;
}

请注意您对main()的错误声明。