读书人

关于制表符和停止位的小程序习题有关问

发布时间: 2012-09-18 16:21:42 作者: rapoo

关于制表符和停止位的小程序习题问题,为什么总多一个空格呢

代码在下面,我设置的条件语句是pos等于8,输入的空格数大于0,pos大于0时,那是linux的一个制表符停止位,就把空格计数变量nb清空,pos清空,制表符执行一次。运行程序后

123456789 格式位
8 输入7个空格,一个数字8
8 程序执行一次输入制表符,然后打印字母。


我纠结的是为什么输入7个空格,当pos等于7时,就返回制表符了,明明我设置的是pos必须是8,才要返回制表符的。哪地方我错误了,请高人指点下。

还有个问题就是这个程序在‘\n’上的处理是错误的,谁能帮忙修改下\n那段正确的代码。

感激不尽。

C/C++ code
int main(){       int c, nb, pos;      nb = 0;      for (pos = 1; (c = getchar()) != EOF; ++pos){        if (c == ' '){                  ++nb;           if (pos % TABINC == 0 && nb > 0 && pos > 0){     /*这块没怎么弄明白,明明是\t是8位的,或者说pos为什么不能从1开始记*/                 putchar ('\t');                 pos = 1;                 nb = 0;               }            }     else if (c == '\t') {               putchar('\t');               pos = 1;               nb = 0;            }     else if (c == '\n') {               if (nb > 0)               putchar('\t');               putchar('\n');              nb = 0;              pos = 1;            }     else {            for (; nb > 0;--nb)            putchar(' ');            putchar(c);           }} return 0;}


[解决办法]
1,9,17,25,...

读书人网 >C语言

热点推荐