Работа с бинарными файлами, параметры функции fseek: вывести на экран пятое по счету число - C (СИ)
Формулировка задачи:
Вот имеется файл,в котором содержатся 7 вещественных чисел
1.03 2.07 4.015 2.38 5.78 9.34 8.41
Нужно вывести на экран пятое по счету число. Если бинарный файл,это файл прямого доступа,то,по идее,используя функцию fseek() я могу сместиться на нужное число значений и получить пятое число
То есть в данном случае код будет выглядеть вот так:
А если у меня будут числа вида
1 2 3 4 5
То код будет вот таким
Или таким
Может кто-нибудь объяснить,почему нужно именно так? То есть мне не совсем понятен второй параметр в функции fseek,почему он именно такой и от чего он зависит ?
int main() { FILE *f; double buf; f=fopen("data.bin","rb"); fseek(f,5*sizeof(float),SEEK_SET); fscanf(f,"%lf",&buf); printf("%lf",buf); fclose(f); return 0; }
int main() { FILE *f; double buf; f=fopen("data.bin","rb"); fseek(f,2*sizeof(float),SEEK_SET); fscanf(f,"%lf",&buf); printf("%lf",buf); fclose(f); return 0; }
int main() { FILE *f; double buf; f=fopen("data.bin","rb"); fseek(f,7,SEEK_SET); fscanf(f,"%lf",&buf); printf("%lf",buf); fclose(f); return 0; }
Решение задачи: «Работа с бинарными файлами, параметры функции fseek: вывести на экран пятое по счету число»
textual
Листинг программы
float arr[7] = { 1.03, 2.07, 4.015, 2.38, 5.78, 9.34, 8.41 }; //float arr[7] = { 1, 2, 3, 4, 5, 6, 7 }; int i; float num; FILE* f; f = fopen("data.bin", "wb"); for (i = 0; i < 7; ++i) fwrite((void*)&arr[i], sizeof(float), 1, f); fclose(f); f = fopen("data.bin", "rb"); fseek(f, 5 * sizeof(float), SEEK_SET); fread(&num, sizeof(float), 1, f); printf("%f\n", num); fclose(f);
Объяснение кода листинга программы
- Объявляется массив из 7 элементов типа float с начальными значениями {1.03, 2.07, 4.015, 2.38, 5.78, 9.34, 8.41}.
- Создается переменная типа int для цикла и переменная типа float для хранения числа, которое будет прочитано из файла.
- Открывается файл
data.bin
в режиме записи (wb
). - В цикле записываются все элементы массива в файл с помощью функции fwrite.
- Файл закрывается с помощью функции fclose.
- Открывается файл
data.bin
в режиме чтения (rb
). - С помощью функции fseek устанавливается позиция чтения пятого по счету элемента массива (5 * sizeof(float)).
- С помощью функции fread считывается один элемент массива в переменную типа float.
- С помощью функции printf выводится на экран значение считанного числа.
- Файл закрывается с помощью функции fclose.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д