首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-09-18 
关于制表符和停止位的小程序习题问题,为什么总多一个空格呢代码在下面,我设置的条件语句是pos等于8,输入的

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

  代码在下面,我设置的条件语句是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,...

热点排行