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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MishkaSh
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 129
#1

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

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

Ребят как по умному объяснить преподавателю что я использую функцию _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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2013, 07:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функции fseek, _fseeki64 (C++):

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

Fseek и структуры - C++
Добрый день,не могу разобраться с fseek в структурах / Нужно сделать запрос (zapros()) n-ой записи через fseek и вывести ее ,либо изменить...

Функция fseek - C++
Здраствуйте! Пишу сейчас телефонную книгу. Точнее что-то наподобие этого. Появилась проблема. Мне необходимо из файла, в который раннее...

fseek не работает - C++
Нужно записать данные в структурированный текстовый файл. Проблема заключается в том, что в части ввод данных, функция fseek не...

fseek / fread - C++
Всем привет! Такой вопрос возник. Есть строка, состоящая из нескольких &quot;записей&quot; в файле (буквы + числа). Нужно с помощью функций...

fseek для ab - C++
Нигде не могу найти работает ли fseek для режима ab??? или у аb статически указатель стоит в конце файла? мне нужно в середину файла...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
02.10.2013, 09:19 #2
Не говори ему что fseek создает файлы.
1
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.10.2013, 10:06 #3
MishkaSh, обратите внимание на типы аргументов, которые используют вышеупомянутые функции.

Не по теме:

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

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

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

Не по теме:

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

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

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

fseek вылетает - C++
#include &lt;stdio.h&gt; #include &lt;windows.h&gt; char *filename; long size; File *in; char *infile; int main(int argc, char *argv) { ...

Работа с файлами (fseek) - C++
В чем проблема и как ее устранить ? #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;stdio.h&gt; ...

Что делает fseek? - C++
Что делает fseek и зачем он нужен? fseek(firstFile,0,SEEK_SET); fseek(secondFile,0,SEEK_SET);

Fseek() для ifstream - C++
Знаю, что есть два вида открытия и закрытие файла. 1) Это чистый Си, когда: FILE * pf, * pr; pf = fopen(&quot;new1.txt&quot;, &quot;r&quot;); ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.10.2013, 11:16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru