对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’的显示是没有控制效果的。


转自:http://blog.csdn.net/boyinnju/article/details/6877087

  • 12
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 可以使用 Python 的 ord() 函数获取 ASCII 字符的整数值,然后使用比较运算来找出最大的字符。 例如: ```python a = 'a' b = 'b' c = 'c' max_char = max(a, b, c, key=ord) print(max_char) # Output: 'c' ``` ### 回答2: 题目要求我们从三个 ASCII 字符找出最大的一个,但是需要注意的是,这三个字符不能包括空格制表符回车换行符。 要解决这个问题,我们可以将这三个字符转化为它们所对应的 ASCII 码进行比较。ASCII 码是一种用于表示字符的编码方式,其每个字符都对应着一个唯一的数字。在 ASCII 编码,不同的字符对应着不同的数字,而这些数字是按照固定的规则进行编排的。因此,我们可以利用这种规律进行比较。 举个例子,假设我们要比较字符 A、B、C,它们分别对应的 ASCII 码为 65、66、67。要找出最大的字符,我们只需要将它们的 ASCII 码进行比较,即比较它们对应的数字大小。在这个例子,67 对应的 C 是最大的字符,因此 C 就是我们要找的答案。 在实际编程,我们可以使用编程语言的字符串函数将字符转化为 ASCII 码,然后进行比较。具体实现方式根据编程语言有所不同,但原理类似。 总之,题目要求我们找到三个 ASCII 字符最大的一个,我们可以将它们转化为对应的 ASCII 码进行比较,然后得出最终答案。 ### 回答3: 对于给定的三个ASCII字符,我们需要找到其ASCII码值最大的那个字符。ASCII码是一个美国信息交换标准代码,它定义了128个不同的字符,其包括数字、大写和小写字母、标点符号等。 我们需要比较三个字符的ASCII码值大小,可以使用Python内置的ord()函数来转换字符为对应的ASCII码值。例如,ord('A')将返回65,ord('a')将返回97。 假设我们需要比较的三个字符分别是'a'、'b'和'c',则可以使用以下的Python代码来找到ASCII码值最大的那个字符: ``` max_char = 'a' # 先设最大的是a if ord('b') > ord(max_char): max_char = 'b' if ord('c') > ord(max_char): max_char = 'c' print(max_char) # 输出最大的那个字符 ``` 这段代码,我们先设最大的字符是'a',然后逐一比较'b'和'c'的ASCII码值,如果发现有比当前最大值大的,则将最大值更新为对应的字符。最后输出最大的那个字符即可。 当然,如果我们需要比较更多的字符,可以使用循环来简化代码。例如: ``` chars = ['a', 'b', 'c', 'd', 'e'] # 待比较的字符列表 max_char = chars[0] # 先设最大的是列表的第一个字符 for c in chars: # 遍历列表的每个字符 if ord(c) > ord(max_char): # 比较ASCII码值大小 max_char = c # 更新最大值 print(max_char) # 输出最大的那个字符 ``` 这段代码,我们先将所有待比较的字符存放在列表chars,然后使用循环遍历所有字符,比较它们的ASCII码值大小并更新最大值。最后输出最大的那个字符即可。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值