Работа с бинарными файлами, параметры функции 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д