Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 1
Регистрация: 19.02.2013
Сообщений: 130
1

Функции fseek, _fseeki64

02.10.2013, 07:36. Показов 2058. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят как по умному объяснить преподавателю что я использую функцию _fseeki64 для того чтобы создавать большие файлы, потому что функция fseek не создает файлы больше 4GB. Вот сам код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include "stdafx.h"
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "russian");
__int64 start, finish, move;
FILE *f;
char name;
const int s = 10;
char filename [s];
cout<<"Введи имя файла(вместе с расширением): \n";
cin.getline(filename, s);
if((f = fopen(filename, "r+b")) !=NULL)
    {
    _fseeki64(f,0,SEEK_SET);
    cout<<"Начальная позиция: ";
    cin>> start;
    cout<<"Конечная позиция: ";
    cin>> finish;
    char * buffer = (char*) malloc(finish-start);
    _fseeki64 (f,start,SEEK_SET);
    for (int i = 0; i<finish-start; i++)
        {
         fread((char * ) &name,1 , 1, f);
         _fseeki64(f,start+i,SEEK_SET);
         buffer[i] = name;
        }
    cout<<"На сколько перенести?:";
    cin>> move;
    _fseeki64(f,move+start,SEEK_SET);
    fwrite(buffer, sizeof ( char ), (finish-start), f);
    _fseeki64(f,0,SEEK_SET);
    }
return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.10.2013, 07:36
Ответы с готовыми решениями:

Какие функции команды fseek() ?
Какие функции команды fseek() ?

Суть функции fseek
Здравствуйте, форумчане. Пришла такая мысль после горячего чая. Раньше я считывал все слова...

Как употребить в функции fseek -sizeof(int)? Ошибка: употребление унарного минуса
Как употребить в функции fseek -sizeof(int)? Ошибка: употребление унарного минуса

Работа с бинарными файлами, параметры функции fseek: вывести на экран пятое по счету число
Вот имеется файл,в котором содержатся 7 вещественных чисел 1.03 2.07 4.015 2.38 5.78 9.34 8.41 ...

12
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
02.10.2013, 09:19 2
Не говори ему что fseek создает файлы.
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.10.2013, 10:06 3
MishkaSh, обратите внимание на типы аргументов, которые используют вышеупомянутые функции.

Не по теме:

fseek не создает файлы, а задает смещение в файле.

0
0 / 0 / 1
Регистрация: 19.02.2013
Сообщений: 130
02.10.2013, 10:16  [ТС] 4
Цитата Сообщение от castaway Посмотреть сообщение
Не говори ему что fseek создает файлы.
Ну в смысле почему я именно ее использую

Добавлено через 8 минут
Цитата Сообщение от Tulosba Посмотреть сообщение
MishkaSh, обратите внимание на типы аргументов, которые используют вышеупомянутые функции.

Не по теме:

fseek не создает файлы, а задает смещение в файле.

Не понял, скажи поточнее
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.10.2013, 10:21 5
MishkaSh, http://msdn.microsoft.com/en-u... w9bf3.aspx
Сравните тип аргумента offset для fseek и _fseeki64.
0
0 / 0 / 1
Регистрация: 19.02.2013
Сообщений: 130
02.10.2013, 10:33  [ТС] 6
Цитата Сообщение от Tulosba Посмотреть сообщение
MishkaSh, http://msdn.microsoft.com/en-u... w9bf3.aspx
Сравните тип аргумента offset для fseek и _fseeki64.
Ты про то что в __int64 8 байт?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.10.2013, 10:46 7
Цитата Сообщение от MishkaSh Посмотреть сообщение
Ты про то что в __int64 8 байт?
BINGO!
0
0 / 0 / 1
Регистрация: 19.02.2013
Сообщений: 130
02.10.2013, 10:48  [ТС] 8
Цитата Сообщение от Tulosba Посмотреть сообщение
BINGO!
И что это дает? Объясни пожалуйста
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
02.10.2013, 10:49 9
Ты используешь эти расширения Visual C++, потому что хочешь, чтобы в твоей программе была поддержка больших файлов (больше 4гБ), а стандартные функции библиотеки языка не позволяют этого сделать.
0
0 / 0 / 1
Регистрация: 19.02.2013
Сообщений: 130
02.10.2013, 10:52  [ТС] 10
Цитата Сообщение от castaway Посмотреть сообщение
Ты используешь эти расширения Visual C++, потому что хочешь, чтобы в твоей программе была поддержка больших файлов (больше 2гБ), а стандартные функции библиотеки языка не позволяют этого сделать.
Это я и так знаю
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.10.2013, 10:57 11
Цитата Сообщение от MishkaSh Посмотреть сообщение
И что это дает?
Как что? в 4 байтах можно представить число 2^32, в 8 - 2^64. Задать смещение в 10 гигов, скажем, используя 4 байтовую переменную не получится.
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
02.10.2013, 11:00 12
А зачем ты используешь эти функции?
0
0 / 0 / 1
Регистрация: 19.02.2013
Сообщений: 130
02.10.2013, 11:16  [ТС] 13
Цитата Сообщение от castaway Посмотреть сообщение
А зачем ты используешь эти функции?
Чтобы создать большой файл, к примеру гигов 10

Добавлено через 49 секунд
Цитата Сообщение от Tulosba Посмотреть сообщение
Как что? в 4 байтах можно представить число 2^32, в 8 - 2^64. Задать смещение в 10 гигов, скажем, используя 4 байтовую переменную не получится.
Спасибо, вроде бы понял
0
02.10.2013, 11:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2013, 11:16
Помогаю со студенческими работами здесь

Fseek
Я пытаюсь записать цифру в файл: fseek(f, sizeof(double)*3, 0); fwrite(buffer, 1, sizeof(double),...

fseek
&lt;?php $file = &quot;./666.txt&quot;; if(!($dpr = fopen($file, &quot;r&quot;))) die (&quot;Невозможно открыть файл...

Функция fseek()
Приведите пример использования функции fseek на языке C

Функция fseek
Как функцией fseek &quot;перепрыгивать&quot; через числа. Например, дан файл с числами: 0 15 3 6 7 3 4 12 53...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru