为什么我在c代码中减少了一个空间

时间:2017-04-22 09:49:19

标签: c

对于惯例,让空格键是 - 如果在键盘输入:

J-----a

输出

J----a

我用笔和纸跟踪了我的程序几次,每次都

J'\t'--a

这应该是我在键盘输入的内容,为什么输出

J----a

代码:

/***************************************************
 *    Replacing spaces with appropriate tabs an      *
 *    spaces to achieve the same effect                     *
 *                                                                                      *
 ***************************************************/
#include <stdio.h>
#define TAB 4;

int main(void)
{
    int ch;
    int printPos=0;
    int chpos=-1;
    int space2tab;

    while( (ch=getchar()) !='@')
    {
                chpos++;
            if(ch!=' ')
            {
                space2tab = TAB- printPos % TAB;    
                while(printPos+space2tab <= chpos)
                {
                    putchar('\t');
                    printPos+=space2tab;
                    space2tab = TAB- printPos % TAB;    
                }
                while(printPos<chpos)
                {
                    putchar(' ');
                    printPos++;
                }
                if(printPos==chpos)
                {
                    putchar(ch);
                    printPos++;
                }
            }
    }
    return 0;
}

1 个答案:

答案 0 :(得分:3)

#define TAB 4;

将令牌TAB定义为4; - 包含分号。这意味着

space2tab = TAB- printPos % TAB;    

扩展为

space2tab = 4; -printPos % 4;;

......很可能不是你想要的。

-printPos % 4是一个有效的表达式,将被丢弃。

TAB定义为4

#define TAB 4