栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

练习1-20编写程序detab ,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方。假设制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符终止

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

练习1-20编写程序detab ,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方。假设制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符终止

练习1-20

编写程序detab ,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方。假设制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符终止

可以通过这篇文章了解制表符的原理:

在这篇文章了解了什么是制表符终止位?_Eureka1024的博客-CSDN博客_制表符终止位

#include 
#define N 8
int main(){
    //制表符原理
    printf("1234567t0n");
    printf("12345678t0n");
    printf("123456789t0n");

    int c ;
    int pos = 0;
    int nb = 0;
    while((c=getchar()) != EOF)
    {
       //只要不是制表符就输出,并且将pos移到制表符前的第一个字符
        if(c != 't')
        {
            putchar(c);
            pos++;
            if(c == 'n')//这里需要对末尾的换行符进行处理,不然第二次的时候会出现错误
                pos = 0;
        }
        else
        {
            //对N(8)进行取模,再用N减去它得到得到需要填充空格的个数
            //假如前面输入了abctxyz,则pos移动到c字符的位置,pos的值为3,
            //由此nb = N-pos%N计算可得 nb = 5,因此需要填充的空格个数为5个
            //假如前面输入了12345678abctxyz,则pos移动到c字符的位置,pos的值为11,
            //由此nb = N-pos%N计算结果nb也是为5,填充的空格个数也是为5个,结果也是正确的
            nb = N-pos%N;
            while(nb>0)
            {
                putchar(' ');
                --nb;
            }
            pos = 0;//重新计算
        }

    }
    return 0;

}

输出如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/529369.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号