Урок 1. Часть 2: Инструкции языка Си printf, puts, putchar — вывод текста и других данных

На занятии рассматриваются инструкции языка Си printf, puts и putchar, предназначенные для вывода информации

Функция puts в Си

Функция puts в Си осуществляет вывод информации на экран. Параметром функции (параметр заключен в круглые скобки, именно он выводится на экран) могут быть данные одного из следующих типов:

  1. Вывод строкового литерала
  2. 1
    2
    3
    4
    5
    
    main()
    {
    	puts("Hello world!");
    	system ("pause");
    }
    Показать аналог в Pascal

    begin
      writeln('Hello world!');
    end.
  3. Строковая переменная
  4. main()
    {
    	char slovo[]="Hello world!";
    	puts(slovo);
    	system ("pause");
    }
    Показать аналог в Pascal

    var slovo: string;
    begin
      slovo:='Hello world!';
      writeln(slovo);
    end.
  5. Строковая константа
  6. #define SLOVO "Hello world!"
    main()
    {
    	puts(SLOVO);
    	system ("pause");
    }
    Показать аналог в Pascal

    const SLOVO='Hello world!';
    begin
      writeln(SLOVO);
    end.

Функция putchar в Си

Функция putchar в Си необходима для вывода единичного символа на экран. Параметром функции могут быть данные следующих типов:

  1. Вывод символьного литерала
  2. main()
    {
    	putchar('H');
    	system ("pause");
    }
  3. Символьная переменная
  4. main()
    {
    	char c;
    	c='H';
    	putchar(c);
    }
  5. Символьная константа
  6. #define C 'H'
    main()
    {
    	putchar(C);
    	system ("pause");
    }

В некоторых компиляторах при использовании функции putchar в Си необходимо подключить в код файл заголовков STDIO.H с помощью директивы #include. В подобных компиляторах функция putchar() является производной другой функции — putc(), которая осуществляет вывод на специальные устройства, такие как диск или принтер.

Пример подключения файла заголовка:

#include <stdio.h>
main()
{
	char c;
	c='H';
	putchar(c);
}

Escape символы в Си или управление перемещением курсора

В Си есть возможность управлять перемещением курсора на экране, т.е. переходить на другую строку, двигаться на n позиций в строны и т.п. Для этого используются специальные коды — escape-последовательности или escape-символы. Последовательность начинается с символа \, который указывает на то, что символы, расположенные за ним, являются escape-символами. Компилятор, встречая обратную косую черту, не отображает следующие за ней символы, а выполняет действие, на которое они указывают.

Escape-символы в Си должны помещаться в кавычки

\n – переход на новую строку :

   puts("Ура!\n");

После слова Ура! произойдет переход на начало следующей строки.

\t – табуляция :

   puts("0\t1\t2\t3");

Отображает строку с цифрой 0 в крайней левой позиции экрана и цифры от 1 до 5 через табуляцию

\r – возврат каретки к началу той же строки :

   puts ("1\r2"); // произойдет затирание

\b – сдвиг курсора на одну позицию влево

\' — отображает одинарную кавычку

\" — отображает двойную кавычку

\\ — отображает обратную косую черту

Язык Си printf — функция вывода информации

Языки Си и Си++ имеют более сложную и комплексную функцию для вывода информации, называемую printf(). Она позволяет выводить на экран данные любого типа и работать с несколькими аргументами.

Кроме того, функция Си printf() позволяет осуществлять так называемый форматированный вывод данных.

Самый обычный случай, когда функция printf() просто заменяет функцию puts() для вывода строки:

#define NOTE "Привет!"
main()
{
   printf(NOTE );
}

Но целесообразней использовать функцию для осуществления форматированного вывода:
си fprintf

Рассмотрим пример:

main()
{
	printf("Mne ispolnilos %d let", 12);
	system ("pause");
}

Программа выведет на экран «Mne ispolnilos 12 let».

Указатели формата:
%d целое число
%u беззнаковое целое число
%f вещественное число типа float или double
%e вещественное число в экспоненциальной форме
%c символ
%s строка

Арифметические операции в Си, оператор присваивания

+ сложение
вычитание
* умножение
/ деление
% получение остатка от деления нацело

Оператор присваивания
= простое присваивание a=b
++ унарный инкремент a++ (или ++a)
-- унарный декремент
+= a+=b если a=3, b=4, то a=7
–= a-=b
*= a*=b
/= a/=b
%= a%=b если a=10, b=3 то а=1

Задание C 1_2_1: Напишите программу, содержащую переменные:

	сhar item[] = "Винчестер";
	float cost = 3000.50;
	float markup = 0.75;

Добавьте в программу функцию printf(), которая выводит на экран следующие сообщения:

	Наименование товара:	Жесткий диск
	Цена за 1 упаковку:	3000.50
	Наценка:		0.75

Обратите внимание на выравнивание.

Вопросы для самоконтроля:

  • Что такое escape-последовательности?
  • В чем заключаются различия между escape-последовательностями \n и \r?
  • Как вывести на экран символ «кавычка»?
  • Из каких двух частей состоит список параметров функции printf()?
  • Какие преимущества имеет функция printf() по сравнению с puts()?
  • Что такое указатель формата?