Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15198782
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: C/C++

2008-03-20 18:36:36

来源: 作者:antigloss 等级:一般
发布于2006-01-22 17:15 被读3211次 【字体: 】

下面这个例子演示了 \a\b\t\r,以及 \n 的作用。其中 \b\t \r 的概念可以追溯到电脑仍然使用打字机作为输出设备的时候,所以对于现代的一些电脑来说,它们可能不起作用。在某些麦金托什机(Macintosh)上,它们的作用就和我们下面所说的不一样。首先请认真看一下以下程序,然后编译运行一下,看看运行结果和您想象的是否一样,然后再看后面的详细解说。

/* esc_sq.c -- 使用转义字符 */ 

#include <stdio.h>

 

int main(void)

{

    float height;

 

    printf("\aPlease enter your height: _____ cm\b\b\b\b\b\b\b\b");

    scanf("%f", &height);

    printf("\tYour height is %.2f.\rOh!\n", height);

 

    return 0;

}

第一个 printf 通常会引起一声鸣响\a),同时显示以下提示

Please enter your height: _____ cm

其中活跃位置(光标)在下划线的开端。活跃位置之所以会位于下划线的开端,是因为那八个 \b 把活跃位置后退了八个位置。顺带一题,下划线 _____ 由五个 _ 构成。注意:一般来说,\b 不会擦除前面输出的字符,但是在某些系统,\b 却会擦除前面输出的字符,导致显示结果为 Please enter your height: \a 产生的效果取决于硬件。一般来说,输出 \a 会产生鸣响。但是在某些系统,输出 \a 不会产生任何效果,或者仅仅显示一个特殊字符。

    输入一个数后(比如输入 180.5),屏幕的显示会变成

Please enter your height: 180.5 cm 

我们输入的数字取代了原来的下划线。接着我们需要按回车确定我们的输入。按下回车键后,
活跃位置会移动到下一行的开端。
 

       第二个 printf 运行结束后,屏幕显示如下:

 

    Please enter your height: 180.5 cm

    Oh!     Your height is 180.50.

这是因为 \t 使活跃位置向后移动了若干个位置(通常是八个),然后输出
Your height is 180.50. 。接着 \r 使活跃位置返回当前行的开端,然后输出 Oh!
最后 \n 引起换行。
 

参考资料:C Primer 5th Edition

                       C99 标准

 

本文版权归 以及 作者 antigloss 共同所有,转载请注明原作者和出处。谢谢。

阅读(1026) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~