- •Інструкція
- •2. Теоретичні відомості
- •2.1. Вступ
- •2.1.1. Алфавіт мови c
- •2.1.2. Типи і розміри даних
- •2.1.3. Константи
- •2.1.4. Декларації
- •2.2. Структура програми
- •2.2.1. Операції
- •Операції аналогічні операціям в мові Паскаль і Фортран.
- •Операції відсутні в мовах Паскаль і Фортран. Інкрементні та декрементні операції.
- •Для ілюстрації цих операцій виконайте таку програму
- •Побітові операції
- •Операція “?”
- •Операція присвоєння.
- •2.2.2. Пріорітет і порядок виконання операцій.
- •2.3. Перетворення типів
- •2.4. Оператори
- •2.4.1. Оператор if
- •2.4.2. Оператор switch
- •2.1. Директиви препроцесора
- •2.1.1. Макровизначення
- •#Define ідентифікатор (список ідентиф) стрічка заміни.
- •2.1.2. Умовна компіляція.
- •2.2. Оператори циклу у мові с.
- •1) З оператором while:
- •2) З оператором do-while
- •3) З оператором for
- •2.3. Управляючі оператори break, continue I goto.
- •2.4. Специфіка використання операторів break і contіnue.
- •2.5. Форматований ввід-вивід
- •Вивід символів
- •Вивід чисел
- •Вивід адрес
- •Специфікатор %n
- •Модифікатори формату
- •Модифікатор мінімальної ширини поля
- •Модифікатор точності
- •Ввід чисел
- •Ввід цілих чисел без знака
- •Ввід окремих символів
- •Ввід рядків
- •2.6. Функції і перемикання вводу-виводу.
- •3. Контрольні запитання
- •4. Лабораторне завдання
- •Мета роботи.
- •6. Список літератури
- •Завдання до лабораторної роботи
Ввід чисел
Для вводу цілого числа використовуються специфікатори %d або %і. Для вводу числа із плаваючою крапкою, представленого в стандартному або науковому форматі, застосовуються специфікатори %е, %f або %g.
Використовуючи специфікатори %о або %х, можна вводити цілі числа, представлені у вісімковому або шістнадцятковому форматі відповідно. Специфікатор %х має два варіанти, призначених для ввід малих і великих шістнадцяткових цифр від А до F. Однак при вводі шістнадцяткових чисел це не має значення. Розглянемо програму, що виконує ввід вісімкового і шістнадцяткового числа.
#include <stdіo.h>
int maіn(voіd)
{
іnt і, j;
scanf("%o%x", &і, &j);
prіntf("%0 %x", і, j);
return 0;
}
Функція scanf () припиняє вводити числа, виявивши перший нечисловий символ.
Ввід цілих чисел без знака
Для вводу цілих чисел без знака застосовується модифікатор %і. Наприклад, фрагмент
unsigned mm;
scanf("%i", &num);
вводить ціле число без знака і присвоює його змінній num.
Ввід окремих символів
Як вказувалося раніше, окремі символи можна вводити за допомогою функції getchar () або похідних від її функцій. Функцію scanf () також можна застосовувати для цієї мети, використовуючи специфікатор %с. Однак, як і функція getchar, функція scanf використовує буферизований ввід, тому в інтерактивних програмах її застосовувати не слід.
Незважаючи на те що пробіли, знаки табуляції й символи переходу на новий рядок використовуються як розділювачі при читанні даних будь-яких типів, при вводі окремих символів вони зчитуються нарівні з усіма. Наприклад, якщо потік вводу містить рядок “x y", то фрагмент коду
scanf ("%c%c%c", &а, &b, &с) ;
присвоїть символ х зміннїй a, пробіл - змінній b і символ y - змінній с.
Ввід рядків
Функцію scanf () можна застосовувати для вводу рядків із вхідного потоку. Для цього використовується специфікатор %s. Він змушує функцію scanf () зчитувати символи, поки не виявиться розділювач. Символи, пораховані із вхідного потоку, записуються в масив, на який посилається відповідний аргумент, а в кінець цього масиву записується нульовий байт. Функція scanf () вважає розділювачем пробіл, символ переходу на новий рядок, символ табуляції, символ вертикальної табуляції, а також символ прогону паперу. Отже, функцію scanf () не можна просто застосувати для вводу рядка "Це перевірка", оскільки ввід припиниться на першому ж пробілі. Щоб побачити ефект, зі специфікатором %s, попробуйте застосувати наступну програму до рядка "Всім привіт".
#іnclude <stdіo.h>
іnt maіn (voіd)
{
char str[80] ;
prіntf("Введіть рядок: ");
scanf("%s", str);
prіntf("От ваш рядок: %s"/ str);
return 0;
}
Програма поверне лише слово "Всім", а іншу частину рядка проігнорує.
2.6. Функції і перемикання вводу-виводу.
З форматним вводом-виводом, тобто функціями scanf i printf ми ознайомились в першій лабораторній роботі. Крім цих функцій в стандартній бібліотеці вводу-виводу <stdio.h> існують і інші. Зокрема функції вводу і виводу одного символа:
getchar ()
putchar (a)
Ці функції використовуються для вводу-виводу текстів.
Функція getchar() одержує один символ з клавіатури і записує його в стандартний файл вводу “stdin”.
Функція putchar(a) пересилає один символ з пам’яті машини в стандартний файл виводу stdout (тобто на екран). Найпростіша програма, яка відображає роботу цих функцій має вигляд:
#include <stdio.h>
ain ()
{
char ch;
ch= getchar ();
putchar (ch);
}
Параметром функції putchar є ім’я змінної, що виводиться на друк. Функція getchar параметрів не має.
Щоб відмітити де закінчується один файл і починається інший вводиться таке поняття, як “ознака кінця файлу”-EOF (End-of-File).
З використанням символьної константи EOF програма копіювання із стандартного файлу вводу stdin в стандартний файл виводу stdio має вигляд:
#include<stdio.h>
main()
{
char ch;
int
while((ch=getchar())!=EOF)
putchar(ch);
}
Якщо існує потреба вводити нашу інформацію не із стандартного файлу (тобто з клавіатури), а з файлу що міститься на магнітній стрічці або з телетайпу, необхідно вказати комп’ютеру що джерело даних є файл, а не клавіатура. Це можна зробити двома методами
1) Явно, використовуючи стандартні функції, що відкривають і закривають файли, організують зчитування і запис даних.
2) Не змінюючи програми (тобто функцій вводу-виводу) при її запуску перемкнути ввід-вивід, тобто вказати комп’ютеру при виконанні програми, що вхідні дані містяться не у стандартному файлі, а у файлі data.in.
Операція перемикання вводу-виводу - це засіб операційної системи UNIX, а не самої мови C. Але вона виявилась настільки корисною, що при переносі компілятора з мови C на інші вичислювальні системи найчастіше переноситься і ця операція.
Перемикання вводу здійснюється за допомогою знака “<”. Якщо програма test для вводу використовує функцію getchar(), то командна стрічка
test<data.in
вказує програмі, що вхідні дані вводяться не з клавіатури, а з файлу data.
Перемикання виводу здійснюється за допомогою знаку “>”.
test>rez.out
Вивід результатів виконання програми test буде здійснюватись не на екран, а у файл rez.out.
