Особенность Си – отсутствие в языке операторов ввода – вывода, вместо них используют библиотечные функции.
Устройства ввода – вывода это клавиатура и дисплей (консоль).
Бывает:
— Неформатированный
— Форматированный.
Функции неформатированного ввода – вывода:
1. функции ввода – вывода символов:
putchar ( ) - не переводит строку.
Getchar ( )
/*putgetch.cpp Иллюстрация ввода – вывода */
#include <stdio.h>
#define initial ‘H’
main ( )
{
char letter = ‘G’;
char in_letter;
putchar (initial);
putchar (letter);
putchar (‘\a’);
putchar (‘\n’);
in _letter = getchar ( );
putchar (in_letter);
putchar (‘n’);
return 0;
}
putgetch.exe
HG звонок
_X
_
2. функции ввода – вывода строки:
puts ( ) – выводит строку с переходом на новую строку.
Gets ( ) – вводит строку, символы которой набираются с клавиатуры, ввод заканчивает ENTER.
/* getsputs.cpp Имитация ввода – вывода */
#include <stdio.h>
main ( )
{
char name [20];
char full_name [80];
puts (‘Введите ваше имя’);
gets (name);
puts (“Ввод подтверждается”);
puts (name);
puts (“Введите ваше ФИО”);
gets (full_name);
puts (“Ввод подтверждается”);
puts (full_name);
return 0;
}
3. Функции форматированного ввода – вывода позволяет обрабатывать несколько переменных, выполнять преобразование данных;
Printf ( ) – выводит данные на экран.
Scanf ( ) – принимает данные с клавиатуры.
Функция printf ( ) выводит на экран строку символов до знака %ХХХ.
ХХХ – тип выводимых данных (спецификация)
%d – целое число.
%f – вещественное число.
%c – символ.
%s – строка.
Printf ( ) – не переводит строку.
/*print.cpp Имитация вывода*/
#include <stdio.h>
main ( )
{
int a=5, b=7, c;
c=a+b;
printf (“Сумма равна %d \n”,c);
return 0;
}
При выводе вещественных чисел по умолчанию выводится шесть знаков после запятой:
…
float a=1.2, b=1.44, c;
c=a+b;
printf (“Сумма равна %d \n”,c);
…
на экране будет: сумма равна 2.639999
Чтобы изменить:
Printf (“Сумма равна %2f \n”,c);
Тогда будет только 2 знака после запятой.
/*inout2.cpp Программа ввода – вывода */
#include <stdio.h>
main ( )
{
int a,b,c;
printf (“Введите два целых числа:”);
scanf (“%d %d”,&a, &b);
c=a+b;
printf (“Результат равен %d \n”, c);
return 0;
}
Если в программе используется несколько функций scanf, то во входном буфере остается символ перевода строки и каждый раз при выполнении последующей функции scanf этот символ считывается и программа работает неправильно. Поэтому надо очищать входной буфер.
Fflush (stdin) – функция, очищающая буфер, ее надо ставить перед функцией scanf.
Gets ( ) – вводит данные в виде строки.
Atoi ( ) – преобразует строку в данные типа int.
Atof ( ) – преобразует строку в данные типа вещественные.
Они в заголовочном файле stdlib.h
/*inout3.cpp */
#include <stdio.h>
#include <stdlib.h>
main ( )
{
char name [80];
age_str [80];
weight_str [80];
int age;
float weight;
printf (“Введите ваше имя:”);
gets (name);
printf (“Привет %s! \n” name);
printf (“Какой ваш возраст?”);
gets (age_str);
age=atoi (age_str);
printf (“А какой у вас вес?”);
gets (weight_str);
weight = atof (weight_str);
printf (“Подтверждаю ввод, возраст - %d, вес - %2f \n”, age, weight);
return 0;
}
gethch ( ) – вводит символ с клавиатуры и не отображает его на экране, нажатие ENTER не надо, это функция возвращает тип char.
Часто это функция используется для ввода значений, например из какого та списка. puts (”для продолжения нажмите ENTER”);
Getch ( ) – находится в заголовочном файле conio.h.