版权声明:本文为博主原创文章,未经博主允许不得转载。

 

目录(?)[+]

 

C标准库里<ctype.h>中声明了一个函数:

int isspace(int c);

该函数判断字符c是否为一个空白字符。

C标准中空白字符有:空格(‘ ’)、换页(‘\f’)、换行(‘\n’)、回车(‘\r’)、水平制表符(‘\t’)、垂直制表符(‘\v’)六个。下面是本人的一些理解。

空格

相信大家对它非常了解。值得注意的是它的ASCII码为0x20,而不是0x00。0x00代表空(NULL)。本人初学C时认为空格值为0,惭愧惭愧。

回车(‘\r’)

我们在编辑文件时,一般敲一下回车键就会转到下一行编辑。那么“回车”和“换行”是不是一回事呢?

显然不是的。大家不要被键盘上回车键效果所蒙蔽,此“回车”(回车符)非彼“回车”(回车键)。

回车(‘\r’)效果是输出回到本行行首,结果可能会将这一行之前的输出覆盖掉。例如执行:

puts("hello world!\rxxx");

在终端输出的是:

xxxlo world!

如果将上面的字符串写入文件中,例如执行:

char *s = "hello world!\rxxx";

FILE *str = fopen("t.txt","r");

fwrite(s, 16, 1, str);

用文本编辑器打开t.txt。显示的效果将由打开的编辑器所决定。

vi的效果为

windows记事本效果为

可以看到,vi将\t用^M代替,而记事本就没有显示该字符。

换行(‘\n’)

顾名思义,换行就是转到下一行输出。例如:

puts("hello\nworld!");

在终端中将输出

hello

world!

但需要注意的是,终端输出要达到换行效果用“\n”就可以,但要在文本文件输出中达到换行效果在各个系统中有所区别。

在*nix系统中,每行的结尾是"\n",windows中则是"\n\r",mac则是"\r"。

水平制表符(‘\t’)

相信大家对‘\t’还是比较熟悉的。一般来说,其在终端和文件中的输出显示相当于按下键盘TAB键效果。一般系统中,显示水平制表符将占8列。同时水平制表符开始占据的初始位

置是第8*n列(第一列的下标为0)。例如:

puts("0123456\txx");

puts("0123456t\txx");

在终端的输出为

垂直制表符(‘\v’)

垂直制表符不常用。它的作用是让‘\v’后面的字符从下一行开始输出,且开始的列数为“\v”前一个字符所在列后面一列。例如:

puts("01\v2345");

在终端输出为

换页(‘\f’)

换页符的在终端的中的效果相当于*nix中clear命令。终端在输出‘\f’之后内容之前,会将整个终端屏幕清空空,然后在输出内容。给人的该觉是在clear命令后的输出字符串。

最后我想说明一点,‘\r’‘\t’‘\v’‘\f’也是控制字符,它们会控制字符的输出方式。它们在终端输出时会有上面的表现,但如果写入文本文件,一般文本编辑器(vi或记事本)对‘\r’‘\v’‘\f’的显示是没有控制效果的。

对C标准中空白字符(空格、回车符(\r)、换行符(\n)、水平制表符(\t)、垂直制表符(\v)、换页符(\f))的理解的更多相关文章

  1. java 去html标签,去除字符串中的空格,回车,换行符,制表符

    public static String getonerow(String allLine,String myfind)     {                           Pattern ...

  2. 通过Shell脚本读取properties文件中的参数时遇到\r换行符的问题

    今天在编写微服务程序启动脚本的时候,遇到一个比较奇葩的问题,下面给出具体描述: 目标:通过读取maven插件打包时生成的pom.properties文件,获取里面的应用名称和应用版本号,然后拼接得到s ...

  3. Windows、Unix、Mac不同操作系统的换行问题-剖析回车符\r和换行符\n

    转载链接:http://blog.csdn.net/tskyfree/article/details/8121951 一.概念: 换行符‘\n’和回车符‘\r’ (1)换行符就是另起一行  --- ' ...

  4. 换行符javajava去除字符串中的空格、回车、换行符、制表符

    在改章节中,我们主要介绍换行符java的内容,自我感觉有个不错的建议和大家分享下     每日一道理 只有启程,才会到达理想和目的地,只有拼搏,才会获得辉煌的成功,只有播种,才会有收获.只有追求,才会 ...

  5. C语言:将ss所指字符串中所有下标为奇数位上的字母转换成大写,若不是字母,则不转换。-删除指针p所指字符串中的所有空白字符(包括制表符,回车符,换行符)-在带头结点的单向链表中,查找数据域中值为ch的结点,找到后通过函数值返回该结点在链表中所处的顺序号,

    //将ss所指字符串中所有下标为奇数位上的字母转换成大写,若不是字母,则不转换. #include <stdio.h> #include <string.h> void fun ...

  6. java去除字符串中的空格、回车、换行符、制表符

    import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author chzeze * 2016-11-07 */ ...

  7. 换行符java去除字符串中的空格、回车、换行符、制表符

    import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author lei * 2011-9-2 */ publ ...

  8. iOS NSString去除其他字符(空格回车符)

    很多时候大家都需要对字符串进行处理.现在就对字符串删掉特殊字符的处理进行总结一下. 1.stringByTrimmingCharactersInSet  这个方法只能对字符串前后两个部分的特殊字符进行 ...

  9. Java字符代码中干掉制表符、回车符和换行符

    Java字符代码中干掉制表符.回车符和换行符 代码片段: String sql = StringUtils.trim(sql).replaceAll("[\\r\\n\\t]",& ...

随机推荐

  1. HDOJ 1163 Eddy's digital Roots(九余数定理的应用)

    Problem Description The digital root of a positive integer is found by summing the digits of the int ...

  2. 面试问题:关于java并发方面的

    主要是回答一下面试中可能会碰到的问题.慢慢的积累一下.一个星期以后,补全.

  3. C++中的string类(2)

    相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯 ...

  4. 《深度解析SDN》学习小结

    SDN(软件定义网络),顾名思义,通过软件来控制或驱动整个网络.SDN的核心概念有两个,第一是转发面与控制面的分离:第二是开放的可编程接口.另外,SDN强调集中式控制,通过软件来控制整个网络,但这并不 ...

  5. red-hat6.5 yum 源配置,cloud-init 安装 This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register

    This system is not registered to Red Hat Subscription Management. You can use subscription-manager t ...

  6. ORA-00314,redolog 损坏,或丢失处理方法

    alertsid.log报错信息: Fri Sep 27 15:18:39 2013 Started redo scan Fri Sep 27 15:18:39 2013 Errors in file ...

  7. javaweb笔记6多个响应头以及 HttpServletResponse对象

    1 常见的响应头 Location: http://www.it315.org/index.jsp     重定向的地址.配合302的状态码一起使用,实现重定向效果. Content-Type: te ...

  8. hdu 4585 Shaolin(STL map)

    Problem Description Shaolin temple is very famous for its Kongfu monks.A lot of young men go to Shao ...

  9. hibernate 一对多操作(级联操作)

    一对多级联操作 1.  级联保存 复杂写法 Company company = new Company(); company.setcName("Hello"); company. ...

  10. 知方可补不足~用xsl来修饰xml

    概念相关 XSL是可扩展样式表语言的外语缩写,是一种用于以可读格式呈现 XML(标准通用标记语言的子集)数据的语言. 起始于 XSL 万维网联盟(W3C)开始发展 XSL 的原因是:存在着对于基于 X ...