我不知道它来自哪里的双倍空格

 收藏

我开始学习C,并且正在编写一些简单的代码。在这种情况下,我必须编写一个使句子反向的代码。我写了一些代码,它确实有效,但是在反句子的开头,有两个空格而不是一个空格,我也不知道为什么。

#include <stdio.h>

int main(){

int i = 0, n = 0;
char a[100] = {0}, b[100] = {0}, c, term;

printf("Write a sentence: ");

while ((c = getchar()) != '\n'){
    switch (c){
        case '.': case '!': case '?':
            term = c;
            break;
        default:
            a[i] = c;
            i++;
            break;
    }
}

for (; i >= 0; i--){
    if (a[i] == ' '){
        for (n--; n >= 0; n--){
            putchar(b[n]);
        }
        printf(" ");
        n = 0;
    }
    else if (i == 0){
        b[n] = a[i];
        for (; n >= 0; n--){
            putchar(b[n]);
        }
    }
    else{
       b[n] = a[i];
       n++;
    }
}

putchar(term);

return 0;

}

有人可以耐心帮助我吗?

谢谢! :)

回复