Функция scanf в языке C

Scanf – это процедура ввода общего назначения, позволяющая считывать данные из потока stdin. При помощи её могут считываться данные всех базовых типов языка.

Вызов scanf

Для того, чтобы считать 2 целых числа, вызов scanf происходит следующим образом:

scanf(«%d%d», &a, &b);

Где:

  • %d — это спецификатор преобразования, читающий десятичное число
  • a и b—переменные, куда записывается считываемое значение.

Ещё один пример вызова scanf:

scanf(«%d:%d»);

Здесь помимо спецификаторов %d, также использован символ «:».

Спецификаторы преобразования для функции scanf()

Первым символом в спецификаторах формата ввода является «%». Далее будут рассмотрены некоторые примеры таких спецификаторов:

  • %% – Читает знак «%»
  • %[] – Производит чтение набора сканируемых символов
  • %a – Читает значение с плавающей точкой в шестнадцатеричной системе исчисления
  • %c – Производит чтение одиночного символа
  • %d – Производит чтение десятичного целого числа (тип int)
  • %e, %f, %g – Читают числа с плавающей точкой
  • %hd – Считывает короткое целое число (shortint)
  • %hhd – Считывает десятичное число и записывает в переменную типа char
  • %hhu – Считывает десятичное число без знака и записывает в переменную типа unsignedchar
  • %hu – Считывает короткое целое число без знака (unsignedshortint)
  • %i – Может читать числа и в десятичном, и в восьмеричном, и в шестнадцатеричном формате
  • %lf – Считывается значение типа double
  • %Lf – Считывается длинное вещественное число (тип longdouble)
  • %n – Принимает значение, которое равное количеству считанных символов
  • %о – Считывает число в восьмеричной системе
  • %p – Считывает указатель (pointer)
  • %s – Считывается последовательность символов без пробелов и записывается в тип char* или char[]
  • %u – Производит чтение десятичного целого числа без знака (тип unsignedint)

Отличия scanf() от printf()

В языках Cи C++ есть ещё одна похожая на scanf()функция. Это printf(). Она в отличие от первой не считывает данные с потока stdin, а выводит их на экран в поток stdout. Здесь так же, как и в команде scanf()есть собственные спецификаторы (иначе они называются командами форматирования).

Чем же различаются printf() и scanf()? Кроме разного синтаксиса и того, что первая предназначена для вывода, а вторая – для ввода, можно ещё добавить, что в них ещё различается форма строк и функция scanf() возвращает значение, которое равно количеству считанных и записанных в параметры значений.

Примеры использования функции scanf()

Символ «*» в строке.

Знак «*», находящийся между «%» и спецификатором преобразования, считывает данные указанного типа, но подавляет их присваивание.

scanf («%d%*c%d», &х, &у);

Чтение нескольких символов в строке.

scanf («%20s», address);

Если необходимо считать не более, чем n символов в указанный массив, то можно использовать выражение “%ns”в строке, где n – это максимально допустимое количество считываемых символов.

scanf(«%с%с%с», &а, &b, &с);

Здесь вводятся 3 одиночных символа и присваиваются для 3 переменных.

Другие подобные функции в C / C++

Кроме функций printf и scanf в языках C и C++ также существуют и другие функции ввода/вывода.
Cin и cout предназначены для поточного ввода и вывода в языке C++. Для их использования нужно подключить дополнительную библиотеку <iostream>. Также эти функции находятся в именном пространстве “std”, поэтому нужно либо подключить его в начале приложения, либо прописать перед вызовом самих функций.

Код, приведённый ниже, в итоге даст один и тот же результат для ввода / вывода:

Вывод

Старый формат:

#include <stdio.h>

int main()
{
printf(«Hello World»);

return 0;
}

Новый формат:

#include <iostream>

using namespace std;

int main()
{
cout<< «Hello World»;

return 0;
}

Ввод

Старый формат:

#include <stdio.h>

int main()
{
int a, b;

scanf(«%d%d», &a, &b);

return 0;
}

Новый формат:

#include <iostream>

using namespace std;

int main()
{
int a, b;

cin>>a >> b;

return 0;
}

В C есть ещё и другие функции ввода / вывода. Среди них getchar()/putchar() и gets()/puts(). При помощи getchar() можно ввести один символ с клавиатуры. C помощью putchar() же можно вывести на консоль один символ. В то время, функции gets() и puts() позволяют ввести либо вывести строку.

Примеры кода с такими функциями

Getchar / putchar:

Код:int a;
a = getchar(); // вводим символ
printf(«%c «, a); // выводим его при помощи функции printf
putchar(a); // выводим её при помощи функции putchar
putchar(‘\n’);

Вывод:u // результат вывода, используя printf
uu// результат вывода, используя putchar

Gets / puts:

char name[30];
char *nP;

printf(«Введите имя и фамилию: «);
gets(name);// ввод строки

printf(«Имя: «);
for(nP = name; *nP != ‘ ‘; nP++)
putchar(*nP);

printf(«\nФамилия: «);
puts(nP+1);// вывод

Функция ввода / вывода в других языках программирования

Delphi / Pascal

В языках Delphi и Pascal для ввода данных в консоли используются функции read и readln. Первая только вводит текст, а вторая – вводит и вдобавок производит перенос строки. Для вывода текста используются write иwriteln. Окончание ‘ln’здесь значит то же, что и в readln, т.е. перевод на новую строку.

В языке Delphi в оконных приложениях также можно выводить текст при помощи сообщений. Сделать это можно процедурой ShowMessage или функцией MessageDlg. Для ввода же можно использовать InputBox().

Примеры кода:

read(а); // запись readс одной переменной
read(Cena,Kol); //запись readс двумя переменными
readln (а, В) ; // запись readln
write(‘Значение перем’);
write(‘енной:’); // использование функции write
ShowMessage(‘Сообщение’);// вывод в оконных приложениях Delphi№1
r := MessageDlg(“Дискриминант равен нулю’ + #13
+ ‘Уравнение не имеет действительных корней.’, mtInformation, [mbOK], 0);// вывод в оконных приложениях Delphi№2
S := InputBox(‘Фунты-килограммы’, ‘Введите вес в фунтах’, ‘’);// ввод в оконных приложениях Delphi

C#

В C# текст вводится при помощи команд ReadKey и ReadLine, которые считывают соответственно один символ либо целую строку. Выводятся данные командами Write и Writeline.

Примеры кода:

Console.ReadKey();
string name = Console.ReadLine();
Console.Write(«Введите свое имя: «);
Console.WriteLine(«Добро пожаловать в C#!»);

Java

В языке программирования Java для считывания данных используются методы next, nextInt, nextLine и некоторые другие. Метод next() считывает слово или фразу, которое ввёл пользователь, до тех пор пока не будет найден первый пробел.

Метод nextInt() считывает с консоли целое число. Метод nextLine() считывает строку до тех пор, пока не будет нажата клавиша «Enter». Для вывода в Java предназначены методы print, printf и println. Различаются они своим способом передачи информации на экран.

Print – это обычный вывод информации, println – это вывод информации + перенос строки, а printf – это форматированный вывод по аналогии с одноимённой функцией из языка C++. Перед методами вывода записывается выражение «System.out.». Означает оно, что перед вызовом этих методов мы обращаемся к статическому полю out из класса System.

Примеры кода:

String val=sc.next();
int val=sc.nextInt();
String val=sc.nextLine();
System.out.print(«Amigo «);
System.out.println(«is the best!»);
System.out.printf(«%4d», multiplyTab[i][j]);

Python

Чтобы ввести данные в языке Python используется функция input(). Для вывода данных используется функция print().

Примеры кода:

a = int(input())
print(5 + 10)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *