Програмування на c, c, java

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

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

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

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

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

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

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

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

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

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

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

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

Схожі статті