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;
}
Результаты выполнения программы
Давайте пошагово пройдемся по этой программе и посмотрим, как она будет работать в системе, где управляющие последовательности ведут себя описанным образом. (Фактическое поведение может отличаться. Например, XCode 4.6 отображает символы \а, \b и \r в виде перевернутых вопросительных знаков!)
Первый оператор printf () (помечен номером 1) воспроизводит звуковой сигнал (вызванный последовательностью \а), а затем выводит следующую фразу:
Введите желаемую сумму месячной зарплаты:
Поскольку в конце строки отсутствует последовательность \n, курсор устанавливается в позицию, следующую за двоеточием.
Второй оператор printf () начинает вывод с позиции, где остановился первый оператор, поэтому после его выполнения вывод на экране выглядит так:
Введите желаемую сумму месячной зарплаты: $
Пробел между двоеточием и знаком доллара появился в связи с тем, что строка во втором операторе начинается с пробела. Результатом семи символов возврата на одну позицию влево будет перемещение курсора на семь позиций влево. Курсор проходит через семь символов подчеркивания и располагается непосредственно после знака доллара. Обычно при возврате на одну позицию влево символы, через которые проходит курсор, не очищаются, но в некоторых реализациях может применяться деструктивный возврат на одну позицию (т.е. забой), поэтому результаты выполнения данной простой программы изменятся.
В этом месте вы вводите с клавиатуры свой ответ, скажем, 4000.00. Теперь строка принимает следующий вид:
Введите желаемую сумму месячной зарплаты: $4000.00
Вывод третьего оператора printf () начинается с \n\t. Символ новой строки перемещает курсор в начало следующей строки. Символ табуляции перемещает курсор в следующую позицию табуляции в этой строке — обычно, но не обязательно, в позицию 9. Затем выводится оставшаяся часть строки. После выполнения этого оператора экран выглядит так:
Введите желаемую сумму месячной зарплаты: $4000.00
$4000.00 в месяц соответствует $48000.00 в год.
Поскольку в этом операторе printf () символ новой строки не используется, курсор остается непосредственно после завершающей точки.
Четвертый оператор printf () начинается с последовательности \r. Она помещает курсор в начало текущей строки. Затем отображается строка “Ого!” и последовательность \n переводит курсор на следующую строку.
Окончательный вывод на экране имеет следующий вид:
Введите желаемую сумму месячной зарплаты: $4000.00
Ого! $4000.00 в месяц соответствует $48000.00 в год.
