Примери за работа с файлове в C, C IT tambourine
Потребителски инструменти
Инструменти за сайта
Съдържание
Примери за работа с файлове в C, C++
Определение:Файл е именуван блок от информация, разположен на носител за съхранение.
Всеки файл има следния брой функции:
Има няколко вида файлове. В Windows има две такива разновидности: текстов файл и двоичен (двоичен) файл.
Функции за работа със съдържанието на C библиотечен файл
Библиотечни функции stdio.h
Функцията отваря файл.
име на файл - път към файла
режим - тип достъп
Ако функцията е завършила успешно, тя връща указател към отворения файл, в противен случай връща нула.
int fclose(ФАЙЛ *поток)
Функцията затваря файла.
поток - указател към файла, който трябва да бъде затворен.
Ако всичко върви добре, тази функция връща 0 или EOF в случай на грешка.
char *fgets( char *string, int n, FILE *stream)
Чете ред, започващ от текущата позиция.
...ако е намерен знак за нов ред (поставя се на реда) ...ако е достигнат краят на файла ...ако са прочетени n-1 знака. низ - низът, където отиват прочетените данни
n - броят на елементите в низа
поток - указател към отворен файл
Ако всичко е минало добре, функцията връща прочетения ред, ако възникне грешка или е достигнат краят на файла, се връща 0.
int fputs( const char *низ, ФАЙЛ *поток)
Записва низ във файла, започвайки от текущата позиция.
string - низът за запис
поток - указател към отворен файл, в който да пишете
Ако функцията успее, от нея се връща неотрицателна стойност. При грешкаEOF се връща.
size_t fread( void *buffer, size_t size, size_t count, FILE *stream)
Функцията чете данни от файл в буфер.
size - размерът на елемента на масива в байтове
count - максималният брой елементи за четене
stream е указател към отворен файл.
Функцията връща броя на прочетените байтове.
Забележка: Типът данни size_t е дефиниран в библиотеката stdio.h, както следва: typedef unsigned int size_t;. С други думи, това е просто unsigned int.
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream)
Функцията записва масив от данни във файл.
size - размерът на елемента на масива в байтове
count - максималният брой елементи за запис във файла
stream е указател към отворен файл.
Функцията връща броя на записаните байтове.
int feof(ФАЙЛ *поток)
Функцията проверява дали е достигнат краят на файла.
поток - указател към отворен файл
Функцията връща ненулева стойност, ако е достигнат краят на файла, нула в противен случай.
int _fileno(ФАЙЛ *поток)
Тази функция връща файлов дескриптор.
stream е указател към отворен файл.
int fseek (ФАЙЛ *поток, int отместване [, int откъде])
Задава отместване във файл
поток - указател към отворен файл
отместване - отместване, измерено в байтове от началото на файла
откъде - точката, от която се прави отместването
io.h библиотечни функции
int _access( const char *path, int mode ) Функцията определя разрешенията на файл или директория.
Ако има разрешение, функцията връща нула, в противен случай -1.
_filellenth
long _filelength( int handle )
Връща размера на файла в байтове.
handle - дръжка на файл.
В случай на грешка функцията връща -1.
int _locking( int манипулатор, int режим, дълги nbytes)
Заключва или отключва байтовете на файла, започвайки от текущата позиция във файла.
handle - дръжка на файл
режим - тип заключване
_LK_LOCK - заключва байтовете, ако байтовете не могат да бъдат заключени, опитът се повтаря след 1 секунда Ако след 10 опита байтовете не са заключени, функцията генерира грешка и връща -1 _LK_NBLCK - заключва байтовете, ако байтовете не могат да бъдат заключени, функцията генерира грешка и връща -1 _LK_NBRLCK - същото като _LK_NBLCK _LOCK K_RLCK - същото като _ LK_LOCK _LK_UNLCK - отключване на байтове, които преди това са били заключени nbytes - брой байтове за заключване
Функцията за заключване връща -1, ако възникне грешка и 0, ако е успешна.
Функции за работа с файлове и директории
stdio.h - преименуване и изтриване на файлове.
преименуване (char * старо име, char * ново име)
старо име - път и текущо име на файл ново име - път и ново име на файл
Функцията връща 0, ако името на файла е променено успешно, и различна от нула стойност, ако промяната не е извършена.
int remove(const char * filename) Премахва файл.
име на файл - път и име на файл
Функцията връща 0, ако името на файла е изтрито успешно, и различно от нула, ако изтриването е неуспешно.
Задаване на разрешения за файлове.
_намери първо _намери следващ
io.h - търсене на файлове. Намира файлове в посочения път, които отговарят на маската.
fileinfo - указател към структурен обект, който ще съхранява информация за намерения файл. Структурата _finddata_t съдържа следните полета:
Ако всичко върви добре, информация запървият намерен файл ще бъде записан в обекта на структурата _finddata_t. В този случай в RAM ще се формира "списък", който има вътрешен указател, който първоначално ще бъде зададен на първия намерен файл. В този случай функцията ще върне уникален номер, свързан с получената група от файлове. Ако търсенето е неуспешно, функцията ще върне -1.
done е уникалният номер на групата файлове в паметта. fileinfo е указател към структурен обект, който ще съхранява информация за следващия намерен файл. Ако бъде достигнат краят на списъка с файлове, функцията ще върне -1.
Как да изтрия файл?
WINSHELLAPI int WINAPI SHFileOperation(LPSHFILEOPSTRUCT lpFileOp)
За да направите това, попълнете основните полета на структурата SHFILEOPSTRUCT:
Има някои други полета, ще разберете. Прочетете повече Програмист №1_2001 (http://www.programme.ru)
Какво е предимството на този метод: 1. Индикатор за изтриване. Ако има много файлове, потребителят ще може да гледа прозореца на Windows 2. Можете да използвате маски в имената на файловете
Показване на атрибути на файл, директория
Програмата показва атрибутите на файл или директория, предадени през командния ред.
Примерна програма за работа с файлове
Операции с директории
Създава директория по посочения път.
dirname - Път и име за директорията, която ще бъде създадена. Само една директория може да бъде създадена едновременно.
Изтрива директория по посочения път.
dirname - Път и име за директорията, която ще бъде изтрита.
И двете функции връщат -1 при грешка.
Пример за работа с директории.
Практически пример. Показване на съдържанието на директория.
Пример за програма, която показва съдържанието на директория. Програмата показва съдържанието на текущата директория при стартиране ислед това дава на потребителя избор. Можете да въведете следните команди: