三字母词与转义字符

首先,我们先来看一下下面这段程序,猜一下运行结果:

<span style="font-size:12px;">#include<stdio.h>
int main()
{
	printf("Delete file (are you sure??)");
	return 0;
}</span>

执行结果如下:

你会发现,本应该是‘)’的地方变成了‘]’,这个时候,就出现了三字母词的概念。

       三字母词(trigrph)就是几个字符的序列,合起来表示另一个字符,三字母词使C环境可以在某些缺少一些必须字符的字符集上实现。这里列出了一些三字母词以及它们所代表的的字符。

                        ??(    [             ??<   {           ??=    #

                        ??)    ]             ??>   }           ??/     \

                        ??!    |             ??'    ^            ??-    ~

        两个问号开头再尾随一个字符一般不会出现在其他表达式中,所以把三字母词用这种形式来表示,这样就不会引起误解。

        当你再编写程序时,有时会需要使用一些特定的字符,比如说双引号“,却无法如愿,因为该字符在这个环境中有特定的意义。例如,双引号”用于定界字符串常量,那么你如何在字符串常量内部中使用双引号呢?这个时候就需要了解转义字符的概念。

转义字符(escape sequence)由一个反斜杠\加上一个或多个其他字符组成。

\?在书写连续多个问号时使用,防止它们被解释为三字母词。

\"用于表示一个字符串常量内部的双引号。

\'用于表示字符常量‘。

\\用于表示一个反斜杠,防止它被解释为一个转义序列符。

\a 警告字符。
\b 退格键
\f 进纸字符
\n 换行符
\r 回车符
\t 水平制表符
\v 水平制表符
\ddd ddd表示1~3个八进制数字,表示八进制所对应的十进制数对应ASCII对应的字符。
\xddd 与上例类似,只是八进制数换成了十六进制数

1.实例:

<span style="font-size:12px;">#include<stdio.h>
int main()
{
	printf("\130");
	return 0;
}</span>

结果:



2.应用:

<span style="font-size:12px;">#include<stdio.h>
int main()
{
	printf("c:test\add\11_20\test.c");
	return 0;
}</span>
求输出字符串,共有几个字符?

执行结果如下:


共有19个字符,一定要注意其中的转义字符,为了确认结果正确,我们可以调用一下strlen函数,

<span style="font-size:12px;">include<stdio.h>
int main()
{
	printf("c:test\add\11_20\test.c");
        printf("%d\n",strlen("c:test\add\11_20\test.c"));
	return 0;
}</span>

执行结果:


需要特别注意的是,不同的编译环境,有关三字母词与转义字符的程序的执行结果是不同的,这个需要自己在使用过程中注意。

以下是第一个例子在VS中的结果,其余均在VC6.0的编译环境下执行。





你可能感兴趣的:(c,三字母词)