• 对C标准中空白字符(空格、回车符( )、换行符( )、水平制表符( )、垂直制表符(v)、换页符(f))的理解


     

    目录(?)[+]

     

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

                  int isspace(int c);

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

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

    空格

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

     

    回车(‘ ’)

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

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

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

           puts("hello world! xxx");

           在终端输出的是:

           xxxlo world!

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

           char *s = "hello world! xxx";

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

           fwrite(s, 16, 1, str);

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

           vi的效果为

           windows记事本效果为

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

     

    换行(‘ ’)

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

           puts("hello world!");

           在终端中将输出

           hello

           world!

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

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

    水平制表符(‘ ’)

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

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

           puts("0123456 xx");

           puts("0123456t xx");

    在终端的输出为

    垂直制表符(‘v’)

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

           puts("01v2345");

    在终端输出为

    换页(‘f’)

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

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

  • 相关阅读:
    Files 的值“
    unable to open databse file
    你选择的点它并不一定在线上!
    各图元对应的DXF名
    combobox下拉列表进行模糊查找时,容易导致光标隐藏
    autocad2010在进行加密时总是出问题
    AutoCAD2010中没有RibbonFoldPanel,需要用RibbonRowPanel替代
    cad2009中把我在2016中定义的块打开为匿名块
    VS2015 未加载程序集时不允许进行更改
    无法将类型为“System.Windows.Forms.SplitContainer”的对象强制转换为类型“System.ComponentModel.ISupportInitialize”
  • 原文地址:https://www.cnblogs.com/micro-chen/p/5796021.html
Copyright © 2020-2023  润新知