- •Загальні положення
- •1.1 Мета роботи
- •1.2 Методичні вказівки до організації самостійної роботи студентів
- •1.2.2 Структура програми
- •If (а) оператор 1 ;
- •1.3 Контрольні запитання
- •1.4 Варіанти індивідуальних завдань
- •2Розв’язання задач з використанням масивів
- •2.1 Мета роботи
- •2.2 Методичні вказівки до організації самостійної роботи студентів
- •Приклад 2.1 Знайти у масиві mas найменший елемент та його індекс.
- •Приклад 2.2Відсортувати масив mas дійсних чисел розміром 10 елементів за зменшенням.
- •2.3 Контрольні запитання а завдання
- •3.4 Варіанти індивідуальних завдань
- •3Робота з рядками
- •3.1 Мета роботи
- •3.2 Методичні вказівки до організації самостійної роботи студентів
- •3.3 Контрольні запитання та завдання
- •4Робота зі структурами
- •4.1 Мета роботи
- •4.2 Методичні вказівки до організації самостійної роботи студентів
- •4.3 Контрольні запитання та завдання
- •4.4 Варіанти індивідуальних завдань
- •5Використання функцій при розробці програм
- •5.1 Мета роботи
- •5.2 Методичні вказівки по організації самостійної роботи студентів
- •5.3 Контрольні запитання та завдання
- •5.4 Варіанти індивідуальних завдань
- •6 Файлові потоки мови с
- •6.1 Мета роботи
- •6.2 Вказівки щодо організації самостійної роботи студентів
- •Ввод и вывод символов
- •Ввод и вывод строк
- •Ввод и вывод записей
- •Управление указателем файла
- •Состояние потока
- •Форматированный вывод
- •Форматированный ввод
- •Другие функции форматного ввода и вывода
- •Примеры
- •6.3 Порядок виконання роботи
- •6.4 Контрольні запитання та завдання
- •6.5 Завдання
- •6.6 Варіанти завдань
- •3.7 Контрольний приклад
- •7 Директиви препроцесора. Багатомодульне програмування
- •7.1 Мета роботи
- •7.2 Вказівки щодо організації самостійної роботи студентів
- •7.3 Порядок виконання роботи
- •7.4 Контрольні запитання та завдання
- •7.5 Завдання
- •7.6 Варіанти завдань
- •7.7 Контрольний приклад
- •Перелік посилань
Форматированный ввод
Для форматированного ввода из потока применяют функцию
int fscanf(FILE *stream, const char *format [, address, ...])
Функция возвращает число полей ввода отформатированных и размещенных в памяти. При неудаче функция возвращает EOF.
Функция fscanf рассматривает входной поток как последовательность полей ввода. Поле ввода заканчивается:
первым символом пробела (но не включает его);
первым символом, который не может быть преобразован по спецификации формата, сопоставленной этому полю;
(n+1)-м символом, если спецификация включает ширину поля в n символов.
Функция просматривает последовательность полей ввода, форматирует их и размещает по адресам — аргументам fscanf. Число адресов, спецификаций формата и полей ввода должно быть согласовано.
Строка формата состоит из неотображаемых символов (' ',\t,\n), отображаемых символов (все прочие, кроме '%') и спецификаторов формата. Если fscanf встречает неотображаемый символ в форматной строке, она будет считывать, но не сохранять все неотображаемые символы входного потока вплоть до первого отображаемого символа. Если fscanf встречает отображаемый символ в форматной строке, она прочитает, но не сохранит соответствующий символ входного потока.
Спецификация формата предписывает fscanf чтение, преобразование и размещение в памяти одного входного поля.
Общий вид спецификации формата:
%[*][ширина][размер][модиф.типа арг.]тип
* — отменяет присваивание поля ввода;
ширина — максимальное число считываемых символов;
размер — N — near, F — far;
модификатор типа аргумента — изменяет тип адресного аргумента;
тип — символ спецификации типа, обязательный элемент формата.
Другие функции форматного ввода и вывода
Ниже перечислены другие функции форматного вывода с указанием заголовочного файла и выходного потока.
|
cprintf |
CONIO.H |
Консоль |
|
fprintf |
STDIO.H |
Поток |
|
printf |
STDIO.H |
stdout |
|
sprintf |
STDIO.H |
Строка |
То же для форматного ввода.
|
cscanf |
CONIO.H |
Консоль |
|
fscanf |
STDIO.H |
Поток |
|
scanf |
STDIO.H |
stdin |
|
sscanf |
STDIO.H |
Строка |
Примеры
Пример. Вводить строки с клавиатуры и сохранять их в текстовом файле.
char buf[100];
FILE *F;
F = fopen("111.txt", "w");
for (;;) {
gets(buf);
if (strlen(buf) > 40)
break;
fputs(buf, F);
fputs("\n", F);
}
fclose(F);
Замечания.Функцияgetsвводит строки из стандартного входного потокаstdin. При вводе с клавиатуры символ '\n' не попадает в строку. Если вводить при помощи функции
fgets(buf, 100,F), то специального выводаfputs("\n",F) не понадобится.
Пример. Имеется текстовый файл. Напечать его самую длинную строку.
char buf[100], maxbuf[100];
FILE *F;
maxbuf[0] = 0;
F = fopen("111.txt", "r");
while (!feof(F)) {
fgets(buf, 100, F);
if (strlen(buf) > strlen(maxbuf) )
strcpy(maxbuf, buf);
}
fclose(F);
fputs(maxbuf,stdout);
Замечания. Вывод строки в потокstdoutможно выполнить функцией
puts(maxbuf);
Пример. Вводить целые числа с клавиатуры и сохранять их в двоичном файле.
int buf;
FILE *F;
F = fopen("111.dat", "w");
for (;;) {
scanf("%d", &buf);
if (!buf)
break;
fwrite(&buf, sizeof(int), 1, F);
}
fclose(F);
Замечания. Для ввода целых чисел из входного потока необходимо использовать только форматный ввод (scanf илиfscanf.).
Полученный файл не является текстовым и может быть правильно прочитан только функцией fread.
