Функция scanf( ) может вводить значения различных типов переменных, используя различные спецификаторы. Она может вводить строку символов, используя спецификатор %s, но ее работа со строками отлична от работы функции gets( ). Основное отличие между ними заключается в том, как определяется окончание ввода.
Функция gets( ) принимает все символы, включая символы пробелов и знаков табуляции, до тех пор, пока не встретит символ ввода <Enter>.
Функция scanf( ) имеет два варианта ввода, причем для любого из них строка начинается с первого встретившегося непустого символа.
Если используется формат спецификатора %s, то окончание строки определяется по первому встретившемуся пустому символу (пробел, знак табуляции, <Enter>).
Если используется формат %s с указанием размера поля, например, %6s, то функция scanf( ) считает не более 6 символов или до первого пустого символа (пробел, знак табуляции, <Enter>), если он встретится раньше.
Например, при вводе символьной строки «Операционные системы» с использованием функции gets
…
char n1[15];
gets(n1);
printf(“%s”, n1);
…
вся строка будет введена полностью:
Операционные системы <Enter>
Операционные системы
а при использовании функции scanf
…
char n1[15];
scanf(“%s”, n1);
printf(“%s”, n1);
…
будет введена часть строки, до первого символа пробел:
Операционные системы <Enter>