3.7 转义序列示例
转义序列在计算机使用电传打字机作为输出设备时就有了,但是它们不一定能与现代的图形接口兼容。
/* escape.c -- uses escape characters */
#include
int main(void)
{
float salary;
printf("\aEnter your desired monthly salary:");/* 1 */
printf(" $_______\b\b\b\b\b\b\b"); /* 2 */
scanf("%f", &salary);
printf("\n\t$%.2f a month is $%.2f a year.", salary,
salary * 12.0); /* 3 */
printf("\rGee!\n"); /* 4 */
return 0;
}
/* 输出:

*/
每一个\b使得光标左移1个位置。
通常,退格不会擦除退回所经过的字符,但有些实现是擦除的。
键入的字符替换了下划线字符。
\r这使得光标回到当前行的起始处。
3.7.2 刷新输出
最初,printf()语句把输出发送到一个叫作缓冲区(buffer)的中间存储区域,然后缓冲区中的内容再不断被发送到屏幕上。C标准明确规定了何时把缓冲区中的内容发送到屏幕:
当缓冲区满;
遇到换行符或需要输入的时候(从缓冲区把数据发送到屏幕或文件被称为刷新缓冲区)。
旧式编译器遇到scanf()也不会强行刷新缓冲区,程序会停在那里不显示任何提示内容,等待用户输入数据。在这种情况下,可以使用换行字符刷新缓冲区。这会导致光标移至下一行起始处,用户无法在提示内容同一行输入数据。还有一种刷新缓冲区的方法是使用fflush()函数。