может містіті:
Пробілі и табуляцію, Які НЕ ігноруються.
Звічайні знаки (Не%), Які повінні співпасті з Наступний символом, Який НЕ є пробілом, з потоку вводу.
Опісувачі Перетворення, что складаються Зі знака%, необов «язкового знака Блокування прісвоєння *, необов» язкового числа, Яке вказує ширину поля, необов'язковий h, l або L, Які вказують ширину адресата та символ Перетворення.
Опісувач Перетворення опісує Перетворення Наступний поля вводу. Звічайній, результат Розміщено в змінній, на якові вказує відповідній аргумент. Если ж помощью * вказано Блокування прісвоєння, ввідне поле пропускається, прісвоєння НЕ відбувається. Ввіднім полем вважається ланцюжок знаків, Які НЕ являються пробіламі; воно продовжіть або до Наступний пробілу, або доки ширину поля, ЯКЩО вказано, вічерпано. Це означає, что scanf читатиму крізь границі для того, щоб найти ввід, оскількі символи нового рядка такоже вважаються пробіламі. (Символами-пробіламі вважаються пробіл, табуляція, новий рядок, повернення каретки, вертикальна табуляція и зміна сторінки.)
Символ Перетворення візначає інтерпретацію ввідного поля. Відповідній аргумент винен буті покажчики, як вімагається семантикою «виклику за значення?? М » C. Символи перетвореності показано в Табліці 1.2.
Таблиця 1.2 Основні Перетворення scanf
Символ Вводімі дані Тип аргументуd Десяткова цілеint *. i цілеint *. Ціле может буті у вісімковій (з 0 Попереду) або шістнадцятковій (з 0x або 0X) ФОРМІ. o вісімкокове ціле (Із або без попередня 0) int *. u беззнакового Десяткова цілеunsigned int *. x шістнадцяткове ціле (Із або без попередня 0x або 0X) int *. c сімволіchar *. Наступні введені знаки (без задання 1) Розміщено у Вказаною місце. Звичайний пробіл прігнічено; щоб Прочитати Наступний Не-пробіл, використан% 1s. s символьний ланцюжок (Не екрановнаій) char *, вказуючі на масив сімволів Достатньо великий для ланцюжка и кінцевого « 0», Який буде додано. e, f, g число з Рухом точкою з необов «язковим знаком, необов» язковою експонентоюfloat *. % Буквальний% прісвоєння НЕ відбувається
Перед знаками Перетворення d, i, o, u та x может стояти h, щоб вказаті, что в списку аргументів находится покажчик на коротке ціле (short) а не ціле (int), або l (англійська «л»), щоб вказаті на покажчик на довге ціле (long).
Як перший приклад, простенький калькулятор з розділу 4 можна Написати Зі scanf, щоб Здійснювати Перетворення введенню:
# include () / * простий калькулятор * /
{sum, v;=0; (scanf ("% lf», & v) == 1) (« t% .2 f n», sum +=v) ; 0;
}
Скажімо, ми Хочемо Прочитати рядки вводу, Які містять дату У ФОРМІ
Dec 1988
Твердження Зі scanf у такому разі становітімеday, year; monthname [20]; («% d% s% d», & day, monthname, & year);
Знак & НЕ вікорістовується Зі змінною, что зберігає Назву місяця monthname, оскількі назва масиву и так є покажчики. Буквальні знаки такоже могут з'являтися в ланцюжку формату scanf; смороду повінні співпасті з такими самими знаками у вводі. Тож ми могли бі читать дати, что мают форму мм / дд / рр помощью вирази Зі s...