Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2011, 14:46   #1
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
Вопрос Команды работы с файлами. Язык Borland C++ 3.1

Здравствуйте. Извиняюсь что эта тема оформлена не по правилам форума.

Не мог бы мне кто нибудь подсказать, какие библиотеки подключать для работы с файлами и какие основные команды есть для того, что бы совершать основные операции над файлом.

Если можете выложите пожалуйста кусок кода в котором все это есть и я буду очень благодарен если там будут подробные комментарии.

Я до этого облазил многие форумы но подробного объяснения как работать с файлом не нашел. поэтому решил создать эту тему.
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 30.01.2011, 16:00   #2
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Старожилы форума, огромная просьба, напишите подключаемую библиотеку для работы с файлами и основные команды для работы с ними же, огромная просьба выложите и синтаксис пожалуйста.
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 30.01.2011, 16:49   #3
optimator
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 92
По умолчанию

Да много чего можно привести
Почитай про <fstream>, FILE из <stdio.h>.
Еще советую почитать про APIшные функции CreateFile(), WriteFile(), ReadFile() и иже с ними -это из <windows.h>
optimator вне форума Ответить с цитированием
Старый 30.01.2011, 16:52   #4
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Цитата:
Сообщение от optimator Посмотреть сообщение
Да много чего можно привести
Почитай про <fstream>, FILE из <stdio.h>.
Еще советую почитать про APIшные функции CreateFile(), WriteFile(), ReadFile() и иже с ними -это из <windows.h>
А ты не мог бы подсказать где можно почитать про "fstream>, FILE из <stdio.h>." просто я часа два гуглил и ничего вразумительного найти не смог. если бы еще примеры синтаксиса были я бы разобрался а так просто не доходит что и как мне нужно делать.
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 30.01.2011, 18:17   #5
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

"FILE
Так как это не класс, то для работы используются функции.
fopen
Открывает или создает файл. Возвращает указатель на переменную типа file. В качестве параметра используется null-terminated строка и способ открытия, тоже как строка. В Хелпе перечислены варианты r - только для чтения. Если попробуете записать в такой файл, вылетит исключение. Вариант w - создает (переписывает заново) файл для записи. Символ a говорит, что файл открыт для обновления.

Другие варианты - r+, w+, a+ говорят о том, что файл открыт для обновления. Первый открывает существующий файл для чтения или записи, второй создает или переписывает заново файл для чтения или записи, третий открывает или создает файл для чтения или записи в конец файла.

Пример использования - fopen("c:test.txt","r+"). Если открытие файла не прошло успешно, возвращается null.

fread, fwrite
За что еще мне нравится этот вид io системы, это за возможность легкого чтения записей данных. Кто работал с tp, знает возможность использования систем вида file of <тип>. Довольно элегантный вариант оперирования всевсозможными бинарными, структурированными файлами.

Язык c предлагает аналогичный способ. Для того, чтобы считать запись произвольного типа trecord, необходим подобный код:

file *stream=fopen("c:test.txt","r+");
trecord record;
fread(&record,sizeof(record),1,stre am);

Конечно, такое чтение записей не является прерогативой file, однако это один из самых простых варинтов. Параметры у fread и fwrite одинаковы. Первый - указатель на область, получающую данные. Второй - размер порции считываемых данных. Третий - количество этих самых порций. Четвертый - собственно дескриптор потока. У fwrite все, аналогично, только относится к записываемым данным.

feof
Логическая функция eof, возвращающая true при установлении указателя на символ "конец файла", Все мы знаем циклы while(!feof(file)){ ... }. Это как раз из той категории.

fseek, ftell
Управляют текущей позицией дескриптора потока. Функция fseek реляционна. Смещение может быть относительно начала файла, его текущей позиции или конца файла. Параметры этой функции такие - дескриптор потока, смещение, определение типа смещения. Последнее как раз и определяет, от чего смещается указатель и может быть одной из трех констант:

seek_set

Смещает курсор относительно начала файла.

seek_cur

Относительно текущей позиции.

seek_end

Относительно конца файла.

Функция ftell с единственным параметром - дескриптором потока, передает приложению текущую позицию указателя.

fflush, fclose
Тоже знакомые имена. Первая функция сбрасывает данные из буфера обмена с файлом в файл, а вторая закрывает его.
Источник: www.firststeps.ru"

Вот что я нашел по своему вопросу, решил написать здесь потому что думаю некоторые пользователи будут заходить в эту тему в поисках ответа)

Но к сожалению здесь не хватает примера. Если кого не затруднит выложить код программы которая бы прочитала из файла символы записала в массив и из массива записала в файл, то прошу это сделать.

P.S.:А как под спойлер все это дело организовать?
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 30.01.2011, 19:22   #6
optimator
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 92
По умолчанию

Цитата:
Если кого не затруднит выложить код программы которая бы прочитала из файла символы записала в массив и из массива записала в файл, то прошу это сделать.
С использованием FILE
Код:
char *mass = new char[5];
	
	//========== чтение из файла =========
/* Создать в соответствующей директории файл с именем mytxt.txt */
	
	FILE *file_1 = fopen("E:\\mytxt.txt","r");
	for(int i=0;i<5;i++){
	
		fseek(file_1,i,SEEK_SET);
	
		fread(&mass[i], sizeof(char),1,file_1);
	}

	
   for(int i=0;i<5;i++) std::cout<<mass[i]<<" ";
	
	fclose(file_1);

//============= запись в файл ================
	
	FILE *file_2 = fopen("E:\\mytxt_2.txt","w");
	
	
	for(int i=0;i<5;i++){

		fwrite(&mass[i],sizeof(char),1,file_2);
		
	}
		
	fclose(file_2);
	
	delete [] mass;
с использованием <fstream>
Код:
	char *mass = new char [5];
	
	std::ifstream readf("E:\\mytxt.txt",std::ios::in);
	
	readf.read(mass,5);
	
	readf.close();
	
	std::cout<<mass<<std::endl;
	
	std::ofstream wrf("E:\\mytxt2.txt",std::ios::out);
	
	wrf.write(mass,strlen(mass));
	
	wrf.close();
optimator вне форума Ответить с цитированием
Старый 30.01.2011, 19:50   #7
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Огромное спасибо!
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 31.01.2011, 00:11   #8
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Предлагаю, всем желающим постить в эту тему необычные/интересные рабочие куски кода, в котором будет присутствовать работа с файлами, я сам то же по мере сил и возможностей постараюсь в этом деле участвовать)
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 31.01.2011, 12:04   #9
optimator
Пользователь
 
Регистрация: 12.11.2010
Сообщений: 92
По умолчанию

Раз пошла такая тема, приведу пример чтения и записи в файл с использованием WinAPIшных функций.
Код:
#include <windows.h>
//=============
DWORD ByteRead;
	
DWORD ByteWrite;
	
	
//======Чтение (файл должен существовать) =================		
HANDLE hFR = CreateFile("L:\\test.txt",GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
 FILE_ATTRIBUTE_NORMAL,NULL);
	
DWORD size = GetFileSize(hFR,NULL);
		
char *buf = new char [size];
		
ReadFile(hFR,buf,size,&ByteRead,NULL);

//=========== Запись в файл===========
	
HANDLE hFW = CreateFile("L:\\test2.txt",GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,NULL);
                                      
	
WriteFile(hFW,buf,size,&ByteWrite,NULL);
   
   
CloseHandle(hFR);	
   
CloseHandle(hFW);
   
   
delete [] buf;
optimator вне форума Ответить с цитированием
Старый 31.01.2011, 15:23   #10
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Цитата:
Сообщение от optimator Посмотреть сообщение
Раз пошла такая тема, приведу пример чтения и записи в файл с использованием WinAPIшных функций.
Код:
#include <windows.h>
//=============
DWORD ByteRead;
	
DWORD ByteWrite;
	
	
//======Чтение (файл должен существовать) =================		
HANDLE hFR = CreateFile("L:\\test.txt",GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
 FILE_ATTRIBUTE_NORMAL,NULL);
	
DWORD size = GetFileSize(hFR,NULL);
		
char *buf = new char [size];
		
ReadFile(hFR,buf,size,&ByteRead,NULL);

//=========== Запись в файл===========
	
HANDLE hFW = CreateFile("L:\\test2.txt",GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,NULL);
                                      
	
WriteFile(hFW,buf,size,&ByteWrite,NULL);
   
   
CloseHandle(hFR);	
   
CloseHandle(hFW);
   
   
delete [] buf;
Я так понял это можно использовать для компилятора Borland C++ 3.1? Спасибо за пример, но ты не мог бы добавить в свой код немного комментариев, просто те кто не работал с API (например я)) сами не смогут разобраться.
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с файлами в Borland C++ Pavel1992 Помощь студентам 3 14.10.2010 20:12
Borland C++ 3.1 Работа с файлами. ardor Помощь студентам 0 29.05.2010 18:49
borland C++ 3.1 работа с файлами Infa-Red Общие вопросы C/C++ 2 10.05.2010 22:37
Строки и работа с файлами на Borland C++ 3.1 CePryH Помощь студентам 6 16.06.2009 16:37
русский язык в Borland C++ Noor Общие вопросы C/C++ 18 02.01.2009 16:32