довідник c

Читає потік stdin

У версії С99 до параметру format застосований кваліфікатор restrict.

  • специфікаторів формату;
  • пробільних символів;
  • символів, відмінних від пробільних.

Читає значення з плаваючою точкою (тільки С99)

Аналогічно коду% a (тільки С99)

Читає один символ

Читає десяткове ціле

Читає ціле в будь-якому форматі (десяткове, вісімкове, шестнадцатеричное)

Читає дійсне число

Аналогічно коду% е

Читає дійсне число

Аналогічно коду% f (тільки С99)

Читає дійсне число

Аналогічно коду% g

Читає вісімкове число

Читає шістнадцяткове число

Аналогічно коду% х

Читає десяткове ціле без знака

Переглядає набір символів

Читає знак відсотка

Щоб прочитати довге ціле, поставте перед специфікатором формату модифікатор l, а щоб прочитати коротке ціле - модифікатор h. Ці модифікатори можна використовувати з кодами формату d, i, о, і та х.

Чи не символ пробілу в рядку форматування змушує функцію scanf () прочитати і відкинути відповідний символ. Наприклад, при використанні рядка форматування.,. функція scanf () спочатку прочитає ціле значення, потім прочитає і відкине кому і нарешті прочитає ще одне ціле. Якщо заданий символ не виявиться, робота функції scanf () буде завершена.

Елементи вхідного потоку повинні бути розділені пробілами, табуляцією або нового рядка. Такі символи, як кома, крапка з комою і т.п. розпізнаються як роздільники. Це означає, що оператор

прийме значення, введені як 10 20, але навідріз відмовиться від "страви", поданого у вигляді 10,20.

Символ *, що стоїть після знака% і перед кодом формату, прочитає дані заданого типу, але заборонить їх присвоювання. Отже, оператор

при введенні даних у вигляді 10/20 помістить значення 10 в змінну х, відкине знак ділення і привласнить значення 20 змінної у.

Команди форматування можуть містити модифікатор максимальної довжини поля. Він являє собою ціле число, яка розташовується між знаком% і кодом формату, яке обмежує кількість символів, що читаються для будь-якого поля. Наприклад, якщо ви хочете прочитати в змінну address не більше 20 символів, використовуйте наступний оператор.

Якщо вхідний потік містить більше 20 символів, то при наступному зверненні до операції введення читання розпочнеться з того місця, в якому "зупинився" попередній виклик функції scanf (). При виявленні пробільного символу введення даних для поля може завершитися до досягнення максимальної довжини поля. У цьому випадку функція scanf () переходить до читання наступного поля.

Незважаючи на те що прогалини, символи табуляції і нового рядка використовуються в якості роздільників полів, при читанні одиночного символу вони читаються подібно будь-якому іншому символу. Наприклад, якщо вхідний потік складається з символів х у, то оператор

помістить символ х в змінну а, пробіл - в змінну Ь і символ у - в змінну с.

Пам'ятайте, що будь-які інші символи керуючої рядки, які не є специфікаторами формату (включно з пробілами, символи табуляції і нового рядка), використовуються для встановлення відповідності та відкидання символів з вхідного потоку. Наприклад, якщо потік введення виглядає, як 10t20, оператор

помістить 10 в змінну х і 20 - в змінну у. Символ t відкидається, так як він присутній в керуючої рядку.

Якщо перший символ в наборі є знаком вставки (^), то отримуємо зворотний ефект: вхідний поле читається до першого символу із заданого набору символів, тобто знак вставки змушує функцію scanf () приймати будь-які символи, які не визначені в наборі.

Багато компілятори дозволяють за допомогою дефіса задати діапазон. Наприклад, наступний оператор змушує функцію scanf () приймати символи від А до Z.

Важливо пам'ятати, що набір сканованих символів розрізняє великі та малі літери. Отже, якщо ви хочете сканувати як прописні, так і малі літери, задайте їх окремо.

Модифікатори формату, додані до функції scanf () стандартом С99

У версії С99 додано кілька модифікаторів формату для використання у функції scanf (): hh, ll, j, z і t. Модифікатор hh можна застосовувати до специфікаторами d, i, о, і, х і п. Він означає, що відповідний аргумент є покажчиком на значення типу signed char або unsigned char. Модифікатор ll також можна застосовувати до специфікаторами d, i, о, і, х і п. Він означає, що відповідний аргумент є покажчиком на значення типу signed long long int або unsigned long long int.

Модифікатор формату j, який застосовується до специфікаторами d, i, о, і, х і n, означає, що відповідний аргумент є покажчиком на значення типу intmax_t або uintmax_t. Ці типи оголошені в заголовку і служать для зберігання цілих максимально можливої ​​довжини.

Модифікатор формату z, який застосовується до специфікаторами d, i, о, u, x і n, означає, що відповідний аргумент є покажчиком на об'єкт типу size_t. Цей тип оголошений в заголовку і служить для зберігання результату операції sizeof.

Модифікатор формату t, який застосовується до специфікаторами d, i, о, u, x і n, означає, що відповідний аргумент є покажчиком на об'єкт типу ptrdiff_t. Цей тип оголошений в заголовку і служить для зберігання значення різниці між двома покажчиками.

Схожі статті