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

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

Войти
Регистрация
Восстановить пароль
 
Alexanches
86 / 7 / 1
Регистрация: 04.06.2010
Сообщений: 80
#1

Маленький вопрос по работе с файлами - C++

26.01.2011, 23:38. Просмотров 476. Ответов 7
Метки нет (Все метки)

очень глупый к тому же)
есть
C++
1
2
FILE * f=fopen(filename,"r");
FILE* F;
как мне присвоить*F=*f? заранее спасибо)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
26.01.2011, 23:58     Маленький вопрос по работе с файлами #2
Цитата Сообщение от Alexanches Посмотреть сообщение
как мне присвоить*F=*f? заранее спасибо)
В смысле, как сам файл в другой скопировать? Временный файл создать? Назначение этой манипуляции объясните, пожалуйста. А пока вот на всякий случай почитайте...
Alexanches
86 / 7 / 1
Регистрация: 04.06.2010
Сообщений: 80
27.01.2011, 00:00  [ТС]     Маленький вопрос по работе с файлами #3
нужно создать копию для работы с ней)
Iron Bug
22 / 22 / 0
Регистрация: 06.12.2010
Сообщений: 125
27.01.2011, 00:05     Маленький вопрос по работе с файлами #4
а зачем копировать эту структуру?
проблема в том, что файл - это поток. и структура отражает состояние указателей в этом потоке. что тебе даст копирование структур?

Добавлено через 3 минуты
Цитата Сообщение от Alexanches Посмотреть сообщение
нужно создать копию для работы с ней)
довольно странная задумка. можно просто скопировать указатель. хотя всё равно неясно, зачем.
Alexanches
86 / 7 / 1
Регистрация: 04.06.2010
Сообщений: 80
27.01.2011, 00:09  [ТС]     Маленький вопрос по работе с файлами #5
в общем ладно)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 {
                 System::String^ str;
                 this->openFileDialog1->ShowDialog();
                 str=this->openFileDialog1->FileName;
                 char b[256];
                 MyConvert::copyto(b,str,255);
                 FILE* f=fopen(b,"r");
                 while(!feof(f))
                 {
                    _current=(_current->input(f));
                    t->insert(_current);            
                 }
                 t->output(listView1);
                 fclose(f);
             }
цикл проходит лишний оборот) в инпуте вызываю fgets..нужно чтобы он останавливался а оборот раньше чем сейчас)

Добавлено через 1 минуту
Цитата Сообщение от Iron Bug Посмотреть сообщение
а зачем копировать эту структуру?
проблема в том, что файл - это поток. и структура отражает состояние указателей в этом потоке. что тебе даст копирование структур?

Добавлено через 3 минуты


довольно странная задумка. можно просто скопировать указатель. хотя всё равно неясно, зачем.
как бы изменяя 1 файл будет меняться и другой- указатель-то 1..
Iron Bug
22 / 22 / 0
Регистрация: 06.12.2010
Сообщений: 125
27.01.2011, 00:17     Маленький вопрос по работе с файлами #6
fseek(), fgetpos(), fsetpos()
ну и вообще в stdio.h много прочих полезных функций.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
27.01.2011, 06:08     Маленький вопрос по работе с файлами #7
Цитата Сообщение от Alexanches
цикл проходит лишний оборот)
C++
1
while(!feof(f))
неправильная конструкция, даже когда нормально работает
в ней неявная ошибка, которая может всплыть спустя некоторое время

представь, что у тебя чтение файла происходит с флешки, и однажды на неё пролили воду, и никто об этом не знает
файл может открыться даже, и даже читаться, но дойти до повреждённого участка и что потом ?
и потом эта штука, вместо того, чтобы сообщить, что чтение невозможно, просто повиснет, потому что будет ожидать конец файла, который никогда не наступит

Цитата Сообщение от Alexanches
нужно создать копию для работы с ней)
ты делаешь функции и просто передаёшь в них адрес этой структуры
сейчас он в f, его также можно поместить в F через F = f, но помни, что файл можно закрывать только один раз
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2011, 23:37     Маленький вопрос по работе с файлами
Еще ссылки по теме:

C++ Информация по работе с бинарными файлами
Ошибка при работе с файлами C++
C++ Дополнение к работе с файлами
Ошибка при работе с файлами C++
C++ Работа с файлами (найти маленький косяк)

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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
27.01.2011, 23:37     Маленький вопрос по работе с файлами #8
Цитата Сообщение от Alexanches Посмотреть сообщение
нужно создать копию для работы с ней)
если "с ней" в смысле - с копией файла, которая по завершении программы должна удаляться, то вот например: man tmpfile - копируете в него свой файл, и работаете с ним, как с обычным файлом... Если файлы в принципе не большие, то ещё лучше их целиком в память как массив байтов копировать и с ним работать...
Yandex
Объявления
27.01.2011, 23:37     Маленький вопрос по работе с файлами
Ответ Создать тему
Опции темы

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