资源描述
对C标准中空白字符(空格、 回车符(\r)、 换行符(\n)、 水平制表符(\t)、 垂直制表符(\v)、 换页符(\f))了解
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’显示是没有控制效果。
展开阅读全文