c-删除尾部空白的程序不起作用!:(



最近我一直在做K&R的C书中写道:编写一个程序,从每一行输入中删除尾随的空格/制表符,bla-bla-bla。我尝试了很多使用函数的方法,但都没有成功。所以我决定把所有东西都放在main()中,但它也不起作用!这是代码:

#include <stdio.h>
#define MAX_INPUT 100
#define ACTIVE 1 //quit with Ctrl + C
void main(){
    int i, nb, nt;
    char c;
    char line[MAX_INPUT];
    char corrected[MAX_INPUT];  
    while(ACTIVE){
        //get current line
        for(i = 0; i < MAX_INPUT - 1 && (c = getchar()) != EOF && c != 'n'; i++)
            line[i] = c;
        if(c == 'n'){
            line[i] = c;
        }
        line[i + 1] = '';
        //correct current line
        nb = nt = 0;
        for(i = 0; line[i] != ''; i++){
            if(line[i] == ' '){
                nb++;
                if(nb == 1)
                    corrected[i] == line[i];
            }
            else{
                if(line[i] == 't'){
                    nt++;
                    if(nt == 1)
                        corrected[i] == line[i];
                }
                else
                    corrected[i] == line[i];
            }
        }
        corrected[i] == 'n';
        corrected[i + 1] == '';
        //print corrected line
        printf("%s", corrected);    
    }
}

所以,当我想打印当前行的"更正"版本时,它会打印以下内容:

我真的很感激你的帮助。我已经试了整整一周了,我找不到错误xD,这让我抓狂感谢大家的关注!:)

更改

corrected[i] == line[i];
corrected[i] == 'n';
corrected[i + 1] == '';

corrected[i] = line[i];
corrected[i] = 'n';
corrected[i + 1] = '';

==是相等运算符,而=是赋值运算符。

您使用的是比较运算符==,而不是赋值运算符=

相关内容

最新更新