关于转义字符的意义

                                                                                        <span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Arial, Console, Verdana, 'Courier New'; font-size: 12px; line-height: normal; "><div class="article_title" style="display: block; margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; color: rgb(0, 0, 0); font: normal normal normal 20px/30px 'Microsoft YaHei'; "><span class="ico ico_type_Original" style="display: inline-block; width: 19px; height: 19px; margin-top: 0px; margin-right: 2px; margin-bottom: 0px; margin-left: 0px; background-image: url(http://image40.360doc.com/DownloadImg/2011/10/2916/18855870_5.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; vertical-align: middle; background-position: 0px 0px; background-repeat: no-repeat no-repeat; "></span>&nbsp;<h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: inline; font: normal normal normal 20px/30px 'Microsoft YaHei'; vertical-align: middle; "><span class="link_title"><a href="http://blog.csdn.net/boyinnju/article/details/6877087" title="对C标准中空白字符(空格、回车符(\r)、换行符(\n)、水平制表符(\t)、垂直制表符(\v)、换页符(\f))的理解" style="color: rgb(0, 0, 0); text-decoration: none; ">对C标准中空白字符(空格、回车符(\r)、换行符(\n)、水平制表符(\t)、垂直制表符(\v)、换页符(\f))的理解</a></span></h3></div><div class="article_manage" style="padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; color: rgb(153, 153, 153); font: normal normal normal 12px/24px Arial; text-align: right; "></div><div id="article_content" class="article_content" style="margin-top: 20px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-family: 'Courier New', Console, Verdana, 微软雅黑; font: normal normal normal 14px/26px Arial; "><p><span style="font-size: 16px; ">&nbsp;</span><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C标准库里&lt;ctype.h&gt;中声明了一个函数:</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int isspace(int c);</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 该函数判断字符c是否为一个空白字符。</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C标准中空白字符有:空格(‘ ’)、换页(‘\f’)、换行(‘\n’)、回车(‘\r’)、水平制表符(‘\t’)、垂直制表符(‘\v’)六个。下面是本人的一些理解。</span></p><p>&nbsp;</p><h2 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">空格</h2><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相信大家对它非常了解。值得注意的是它的ASCII码为0x20,而不是0x00。0x00代表空(NULL)。本人初学C时认为空格值为0,惭愧惭愧。</span></p><h2 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</h2><h2 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">回车(‘\r’)</h2><p>&nbsp;&nbsp;<span style="font-size: 18px; ">&nbsp;<span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp; 我们在编辑文件时,一般敲一下回车键就会转到下一行编辑。那么“回车”和“换行”是不是一回事呢?</span></span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显然不是的。大家不要被键盘上回车键效果所蒙蔽,此“回车”(回车符)非彼“回车”(回车键)。</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 回车(‘\r’)效果是输出回到本行行首,结果可能会将这一行之前的输出覆盖掉。例如执行:</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; puts("hello world!\rxxx");</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在终端输出的是:</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xxxlo world!</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果将上面的字符串写入文件中,例如执行:</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char *s = "hello world!\rxxx";</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FILE *str = fopen("t.txt","r");</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fwrite(s, 16, 1, str);</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用文本编辑器打开t.txt。显示的效果将由打开的编辑器所决定。</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vi的效果为</span></p><p><span style="font-size: 16px; "><img src="http://image40.360doc.com/DownloadImg/2011/10/2916/18855870_1.gif" alt="" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; "><br></span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; windows记事本效果为</span></p><p><span style="font-size: 16px; "><img src="http://image40.360doc.com/DownloadImg/2011/10/2916/18855870_2.gif" alt="" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; "><br></span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以看到,vi将\t用^M代替,而记事本就没有显示该字符。</span></p><h2 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-size: 18px; ">&nbsp;</span></h2><h2 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">换行(‘\n’)</h2><p>&nbsp;&nbsp;<span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp; 顾名思义,换行就是转到下一行输出。例如:</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; puts("hello\nworld!");</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在终端中将输出</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hello</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; world!</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但需要注意的是,终端输出要达到换行效果用“\n”就可以,但要在文本文件输出中达到换行效果在各个系统中有所区别。</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在*nix系统中,每行的结尾是"\n",windows中则是"\n\r",mac则是"\r"。</span></p><p>&nbsp;</p><h2 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">水平制表符(‘\t’)</h2><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相信大家对‘\t’还是比较熟悉的。一般来说,其在终端和文件中的输出显示相当于按下键盘TAB键效果。一般系统中,显示水平制表符将占8列。同时水平制表符开始占据的初始位</span></p><p><span style="font-size: 16px; ">置是第8*n列(第一列的下标为0)。例如:</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; puts("0123456\txx");</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; puts("0123456t\txx");</span></p><p><span style="font-size: 16px; ">在终端的输出为</span></p><p><span style="font-size: 18px; "><img src="http://image40.360doc.com/DownloadImg/2011/10/2916/18855870_3.gif" alt="" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; "><br></span></p><h2 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">垂直制表符(‘\v’)</h2><p><span style="font-size: 16px; ">&nbsp;</span><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 垂直制表符不常用。它的作用是让‘\v’后面的字符从下一行开始输出,且开始的列数为“\v”前一个字符所在列后面一列。例如:</span></p><p><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; puts("01\v2345");</span></p><p><span style="font-size: 16px; ">在终端输出为</span></p><p><span style="font-size: 18px; "><img src="http://image40.360doc.com/DownloadImg/2011/10/2916/18855870_4.gif" alt="" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; "><br></span></p><h2 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">换页(‘\f’)</h2><p><span style="font-size: 16px; ">&nbsp;</span><span style="font-size: 16px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 换页符的在终端的中的效果相当于*nix中clear命令。终端在输出‘\f’之后内容之前,会将整个终端屏幕清空空,然后在输出内容。给人的该觉是在clear命令后的输出字符串。</span></p><p><span style="font-size: 16px; ">&nbsp;</span></p><p><span style="font-size: 16px; ">最后我想说明一点,‘\r’‘\t’‘\v’‘\f’也是控制字符,它们会控制字符的输出方式。它们在终端输出时会有上面的表现,但如果写入文本文件,一般文本编辑器(vi或记事本)对‘\r’‘\v’‘\f’的显示是没有控制效果的。</span></p></div></span>
                                                                                    </td>
                                                                                </tr>
                                                                            </tbody>
                                                                        </table>
posted @ 2015-12-28 16:23  昨天今天  阅读(631)  评论(0)    收藏  举报