源自《The C Programming Language》P25 pr1-20:

编写程序detab,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方。假设

制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符终止位。n应该是变量还是常量呢?

参考代码:

main.c

1 #include <stdio.h>
2
3 #define TABINC 8 //定义每个TABINC(8)个位置会出现一个制表位
4
5 int main()
6 {
7 int c, nb, pos;
8
9 nb = 0; //到遇到制表符时,到达下个制表位需要的空格数
10 pos = 1; //程序在文本行的当前位置
11 while((c = getchar()) != EOF)
12 {
13 if(c == '\t')
14 {
15 nb = TABINC - (pos - 1)%TABINC;
16 while(nb > 0)
17 {
18 putchar(' ');
19 ++pos;
20 --nb;
21 }
22 }
23 else if(c == '\n')
24 {
25 putchar(c);
26 pos = 1;
27 }
28 else
29 {
30 putchar(c);
31 ++pos;
32 }
33 }
34
35 return 0;
36 }

分析:

1,  理解题意:本题的目的是将输入的'/t'换成适当数目的空格输出。比如,输入:

ab/tcde/tas

pos:123456789,(pos为输入字符的位置,a--第一个输入的字符,c--第四个输入的字符)

输出:ab    cde         as,(b与c之间是6个空格,e与a之间是5个空格)

注:其实在终端输入的字符串和输出的样式是一样的,这里写成ab/tcde/tas,主要是为了直观

上好看,在终端输入时是不会出现上述字符串中的/t,因为这类转义字符时不可见,编译器

默认地用若干个空格代替/t。

2,  TABINC:每隔8个位置就会出现一个制表位,pos为程序在文本行中的当前位置,nb为当遇到制表符时,

程序计算出要到达下一个制表位所需要的空格数

3,  将读入字符分成三类:'/t','/n',其他。分别进行处理。

转载于:https://www.cnblogs.com/roma823/archive/2011/04/22/2101248.html

将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方...相关推荐

  1. 将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方

    #include <stdio.h> #define  TABINC  8 //定义每个TABINC(8)个位置会出现一个制表位 int main() {     int c, nb, p ...

  2. Mybatis 源码探究 (4) 将sql 语句中的#{id} 替换成 ‘?

    Mybatis 源码探究 (4) 将sql 语句中的#{id} 替换成 '? 出于好奇,然后就有了这篇文章啦. 源码给我的感觉,是一座大山的感觉.曲曲折折的路很多,点进去就有可能出不来. 不过慢慢看下 ...

  3. IDEA中HTML标签替换成Thymeleaf标签

    IDEA中HTML标签替换成Thymeleaf标签 一.简介 二.正则表达式基础 分组: 引用: 三.步骤 一.简介 本文主要介绍在IDEA中使用正则表达式将HTML模板中的标签替换成Thymelea ...

  4. R语言str_sub函数从字符串中提取或替换子字符串(substring):str_sub函数指定起始位置和终止位置抽取子字符、str_sub函数指定起始位置和终止位置替换子字符串

    R语言str_sub函数从字符串中提取或替换子字符串(substring):str_sub函数指定起始位置和终止位置抽取子字符.str_sub函数指定起始位置和终止位置替换子字符串 目录

  5. Linux从某个字符串处换行,Windows和Linux中任意字符串替换成换行符的问题

    在Windows中经常碰到要把任意符号转换成回车符的问题,在Linux中这个问题很容易解决: \r 回车 \n 换行 Linux中\n表示一个新的行,Windows中\r\n表示一个新的行. sed ...

  6. js:将字符串中的逗号替换成空格

    s.replace(/,/g," "); g(global 全局)指的是将s中所有的逗号都替换成空格 如若只需要替换第一个逗号,则s.replace(/,," " ...

  7. Excel如何批量将表中的0替换成空值?同时不能影响正常数字中包含的0

    按Ctrl+F然后在弹出对话bai框选择"替换",在"查找"输入du 0,然后勾选zhi "匹配整个单元格内容"(Match entire ...

  8. java 将换行代替_Java批量将文件中的段落替换成空格,根据指定分隔符换行(SQL示例)...

    我的需求是SQL文件中有成千的类似数据,我要将它们进行转换格式,如下图 第一步:将字符段楼替换,使用word排版 把数据拷贝到word中,使用特殊字符替换 点击全部替换,替换之后如下图,这时候它是一串 ...

  9. JS正则——将字符串中的逗号替换成空格

    全局替换 s.replace(/,/g," ")替换第1个 s.replace(','," ")

  10. 将字符串中的换行替换成空

    方法一 PHP_EOL就是其中的一个,代表php的换行符,这个变量会根据平台而变,在windows下会是/r/n,在linux下是/n,在mac下是/r  (linux) $str = str_rep ...

最新文章

  1. 5GS 协议栈 — PFCP 协议 — MAR 多接入规则
  2. 百度资源管理平台 站长工具 批量添加主站域名 子站域名 域名主动推送
  3. 人生苦短我用python梗_人生苦短我用python: eval,e
  4. jenkins简单部署
  5. windows屏蔽USB接口的脚本
  6. 一步步部署基于Windows系统的Jenkins持续集成环境
  7. linux下xargs命令用法详解
  8. 数据结构链表之单向链表:Python3 实现单向链表——1
  9. DTP动态协商——trunk配置、如何关闭域名解析、光接口无法up的原因详解(附图)
  10. java基础之-I/O流和File类解析
  11. eclipse-阶段五- 在[vo.BookMessageData]类型bean中找不到任何有关属性[Total]的信息
  12. Cognos8.3 + oracle9i数据集市 建cube性能调整
  13. 软件工程(吕云翔第二版)部分知识点
  14. 对计算机网络考研知识点归纳(不断更新中T)
  15. 网吧游戏服务器制作教程,图文教程:网吧无盘系统服务端设置细节
  16. BitTorrent协议分析一
  17. redis streams_如何使用Redis Streams
  18. 桌越科技关于程序员和软件开发
  19. [jQuery.FQcomputer] 分期商城汇率计算器
  20. php当下前景怎么样,最适合当下的趋势策略,详细写给你看(7月13日 指数分位点)...

热门文章

  1. mac phpstorm配置svn
  2. c#垂直投影法_形象理解“梯度”与“法向量”的关系
  3. liunx中常用命令 -大数据
  4. idea删除不用或者失效的jdk
  5. java中几种Map在什么情况下使用,并简单介绍原因及原理
  6. sed 多行替换,多行模式处理字符串;一次替换
  7. LayaAir 事件 laya.events.Event
  8. Windows 安装 Oracle Java JDK
  9. 小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_4、快速创建SpringBoot应用之自动创建web应用...
  10. 总结Verilog中always语句的使用