Глава 7. Организация ввода-вывода в C++
//эти числа будут хранится в массиве a.
f r e a d ( a , s i z e o f ( double ) , n , f ) ; //Считать из файла в массив a вещественные числа.
//Поиск максимального, минимального элемента в массиве a, и их индексов.
f o r ( imax=imin =0 , max=min=a [ 0 ] , i =1; i {
i f ( a [ i ]>max)
{
max=a [ i ] ;
imax=i ;
}
i f ( a [ i ]{
min=a [ i ] ;
imin=i ;
}
}
//Перемещение указателя к максимальному элементу.
f s e e k ( f , s i z e o f ( i n t )+imax ∗ s i z e o f ( double ) ,SEEK_SET) ;
//Запись min вместо максимального элемента файла.
f w r i t e (&min , s i z e o f ( double ) , 1 , f ) ;
//Перемещение указателя к минимальному элементу.
f s e e k ( f , s i z e o f ( i n t )+imin ∗ s i z e o f ( double ) ,SEEK_SET) ;
//Запись max вместо минимального элемента файла.
f w r i t e (&max , s i z e o f ( double ) , 1 , f ) ;
//Закрытие файла.
f c l o s e ( f ) ;
//Освобождение памяти, выделенной под массив a.
delete [ ] a ;
return 0 ;
}
7.4
Функции fscanf() и fprintf()
Чтение и запись данных в файл можно выполнять с помощью функций
fscanf()
и fprintf(). Эти функции подобны функциям scanf() и printf(),
описанным в п. 2.9, за тем исключением, что работают не с клавиатурой и экра-
ном, а с файлами. Функции имеют следующие прототипы.
Функция чтения
fscanf(указатель на файл, строка форматов, адреса переменных);
Функция записи
fprintf(указатель на файл,строка форматов, список переменных);
Далее приведён фрагмент программного кода, который демонстрирует при-
мер записи информации в файл my.txt.
char f i o [ 3 0 ] = "Махарадзе В." ;
i n t a =5 , b=5 , c =4;
f l o a t s= ( f l o a t ) ( a+b+c ) / 3 ;
FILE ∗ f ;
f=f o p e n ( " my . t x t " , " w " ) ;
f p r i n t f ( f , "Оценки студента % s \ n " , f i o ) ;
f p r i n t f ( f , "математика % d , физика % d , химия % d \ n " , a , b , c ) ;
f p r i n t f ( f , "Средний балл = % . 2 f \ n " , s ) ;
f p r i n t f ( f , " \ n " ) ;
f c l o s e ( f ) ;
В результате будет сформирован текстовый файл:
Оценки студента Махарадзе В.
математика 5, физика 5, химия 4
Программирование на языке С++ в среде Qt Creator
7.4. Функции fscanf() и fprintf()
241
Средний балл = 4.67
Рассмотрим пример чтения данных из файла. Пусть в файле test.txt хра-
нится информация:
1 Иванов Пётр
170 78.1
2 Петров Иван
180 89.6
3 Карпов Борис 167 56.7
Тогда с помощью следующих команд можно считать информацию из файла
и вывести её на экран.
i n t i , nom ;
f l o a t Ves ;
i n t Rost ;
char f i o [ 1 5 ] , name [ 1 5 ] ;
FILE ∗ f ;
f=f o p e n ( " t e s t . t x t " , " r " ) ;
f o r ( i =0; i <3; i ++)
{
//Чтение из файла
f s c a n f ( f , " % d % s % s % d % f \ n " ,&nom , &f i o ,&name,& Rost ,& Ves ) ;
//Вывод на экран
p r i n t f ( " % d % s % s % d % . 2 f \ n " ,nom , f i o , name , Rost , Ves ) ;
}
f c l o s e ( f ) ;
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.
Do'stlaringiz bilan baham: |