Первого символа, который не соответствует формату (например, буква или пробел после выделения числа); .
Аварийное завершение программы
Abnormal program termination
Форматы ввода данных
Строка описания форматов ввода может содержать:
1) спецификации формата, которые определяются символом % - для выделения, контроля и преобразования соответствующих им введенных значений;
2) любые символы, которые могут быть во входном потоке и которые надо игнорировать:
3) пробельные символы: пробел, символ табуляции (\t), символ новой строки\nи возврата каретки\r
Например, если а строке формата появился символ пробел (_), то с этого момента ввод завершается и из входного потока считываются и игнорируются символы '_' до первого не пробела. Если в строке формата встретились непробельные символы, например последовательность латинских букв и цифр (за исключением символа%), то из входного потока такие же символы считываются и игнорируются.
Появление в строке формата символа%определяет начало формата для очередного аргумента. Формат предписывает функции типаscanfпрочитать и преобразовать очередные символы входного потока в значение типа, определенного форматом. Значение выделяется из входного потока, преобразуется в соответствии с форматом, контролируется на соответствие типу переменной аргумента и присваивается переменной, адрес которой указан в соответствующем формату элементе списка аргументов. Если выделенное значение не соответствует типу формата, результат ввода не определен. Это может произойти, например, при вводе форматом "%d" значения для переменной типаfloatили буква. Сообщение при этом не выдается и продолжается выполнение программы.
При несоответствии типов форматов типам аргументов вводимых значений программа завершается аварийно на этапе ее выполнения. Во время трансляции эта ошибка не обнаруживается. Это может быть, например, при попытке форматом%fввести значение для переменной целого или строчного типа. При этом выдается сообщение:
scanf: floating pointformats not linked
Что означает:
scanf: формат для плавающей точки недопустим
Символы очередного значения выделяются из входного потока до:
1) первого пробельного символа (кроме ввода по форматус);
Под пробельными символами понимаются символы: пробела ( ), табуляции (\t), новой строки (\n) и возврата каретки (\r).
Формат (спецификация формата) не содержит пробелов и имеет следующую форму: