对于惯例,让空格键是 - 如果在键盘输入:
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;
}
答案 0 :(得分:3)
#define TAB 4;
将令牌TAB
定义为4;
- 包含分号。这意味着
space2tab = TAB- printPos % TAB;
扩展为
space2tab = 4; -printPos % 4;;
......很可能不是你想要的。
(-printPos % 4
是一个有效的表达式,将被丢弃。)
将TAB
定义为4
:
#define TAB 4