Форум программистов, компьютерный форум CyberForum.ru

Функции fseek, _fseeki64 - C++

Восстановить пароль Регистрация
 
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 127
02.10.2013, 07:36     Функции fseek, _fseeki64 #1
Ребят как по умному объяснить преподавателю что я использую функцию _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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2013, 07:36     Функции fseek, _fseeki64
Посмотрите здесь:

fseek вылетает C++
Функция fseek C++
C++ fseek / fread
C++ Не работает _fseeki64
fseek не работает C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
02.10.2013, 09:19     Функции fseek, _fseeki64 #2
Не говори ему что fseek создает файлы.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.10.2013, 10:06     Функции fseek, _fseeki64 #3
MishkaSh, обратите внимание на типы аргументов, которые используют вышеупомянутые функции.

Не по теме:

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

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

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

Не по теме:

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

Не понял, скажи поточнее
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.10.2013, 10:21     Функции fseek, _fseeki64 #5
MishkaSh, http://msdn.microsoft.com/en-us/library/75yw9bf3.aspx
Сравните тип аргумента offset для fseek и _fseeki64.
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 127
02.10.2013, 10:33  [ТС]     Функции fseek, _fseeki64 #6
Цитата Сообщение от Tulosba Посмотреть сообщение
MishkaSh, http://msdn.microsoft.com/en-us/library/75yw9bf3.aspx
Сравните тип аргумента offset для fseek и _fseeki64.
Ты про то что в __int64 8 байт?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.10.2013, 10:46     Функции fseek, _fseeki64 #7
Цитата Сообщение от MishkaSh Посмотреть сообщение
Ты про то что в __int64 8 байт?
BINGO!
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 127
02.10.2013, 10:48  [ТС]     Функции fseek, _fseeki64 #8
Цитата Сообщение от Tulosba Посмотреть сообщение
BINGO!
И что это дает? Объясни пожалуйста
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
02.10.2013, 10:49     Функции fseek, _fseeki64 #9
Ты используешь эти расширения Visual C++, потому что хочешь, чтобы в твоей программе была поддержка больших файлов (больше 4гБ), а стандартные функции библиотеки языка не позволяют этого сделать.
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 127
02.10.2013, 10:52  [ТС]     Функции fseek, _fseeki64 #10
Цитата Сообщение от castaway Посмотреть сообщение
Ты используешь эти расширения Visual C++, потому что хочешь, чтобы в твоей программе была поддержка больших файлов (больше 2гБ), а стандартные функции библиотеки языка не позволяют этого сделать.
Это я и так знаю
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.10.2013, 10:57     Функции fseek, _fseeki64 #11
Цитата Сообщение от MishkaSh Посмотреть сообщение
И что это дает?
Как что? в 4 байтах можно представить число 2^32, в 8 - 2^64. Задать смещение в 10 гигов, скажем, используя 4 байтовую переменную не получится.
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
02.10.2013, 11:00     Функции fseek, _fseeki64 #12
А зачем ты используешь эти функции?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2013, 11:16     Функции fseek, _fseeki64
Еще ссылки по теме:

C++ fseek для ab
C++ Какие функции команды fseek() ?
Fseek() для ifstream C++

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

Или воспользуйтесь поиском по форуму:
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 127
02.10.2013, 11:16  [ТС]     Функции fseek, _fseeki64 #13
Цитата Сообщение от castaway Посмотреть сообщение
А зачем ты используешь эти функции?
Чтобы создать большой файл, к примеру гигов 10

Добавлено через 49 секунд
Цитата Сообщение от Tulosba Посмотреть сообщение
Как что? в 4 байтах можно представить число 2^32, в 8 - 2^64. Задать смещение в 10 гигов, скажем, используя 4 байтовую переменную не получится.
Спасибо, вроде бы понял
Yandex
Объявления
02.10.2013, 11:16     Функции fseek, _fseeki64
Ответ Создать тему
Опции темы

Текущее время: 06:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru