Описва как C програмистът създава, отваря и затваря текстов файл или двоичен файл.
Файл означава поредица от байтове, независимо дали е текстов файл или двоичен файл, езикът C не само осигурява достъп до функциите от най-високо ниво, но също така предоставя основното (ОС) извикване за обработка на файлове на устройството за съхранение . Тази глава ще обясни важните разговори в управлението на документи.
отворен файл
Обикновено използвайки функцията fopen () за създаване на нов файл или отваряне на съществуващ файл, това извикване инициализира обект от типа FILE, който съдържа цялата необходима информация за контрол на потока. Ето прототипа на това извикване на функция:
ФАЙЛ *fopen ( const char * име на файл, const char * режим);
Тук име на файл е низ за име на файл, стойността на режима на достъп може да бъде една от следните стойности:
модел | описание |
r | Отворете съществуващ текстов файл, който позволява да бъде прочетен. |
w | Отворете текстов файл, който позволява запис във файла. Ако файлът не съществува, се създава нов файл. Тук вашата програма записва съдържанието от началото на файла. Ако файлът съществува, той ще бъде съкратен до нулева дължина и ще бъде пренаписан. |
a | Отворете текстов файл и пишете във файла в режим на добавяне. Ако файлът не съществува, се създава нов файл. Тук вашата програма добавя съдържание към файловете, които вече имате. |
r+ | Отворете текстов файл, който ви позволява да четете и пишете във файла. |
w+ | Отворете текстов файл, който ви позволява да четете и пишете във файла. Ако файлът вече съществува, той се съкращава до нулева дължина, а ако файлът не съществува, се създава нов файл. |
a+ | Отворете текстов файл, който ви позволява да четете и пишете във файла. Ако файлът не съществува, се създава нов файл. Четенето започва в началото на файла, а записът е само в режим на добавяне. |
Ако се обработва двоичен файл, използвайте следния режим на достъп, за да замените горното:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
затворен файл
За да затворите файла, моля, използвайте функцията fclose(). Прототипът на функцията е както следва:
int fclose (ФАЙЛ *fp);
- Ако файлът е затворен успешно, функцията fclose() връща нула, а ако грешката връща EOF. Тази функция всъщност премахва данните от буфера, затваря файла и освобождава цялата памет, използвана за този файл. EOF е константа, дефинирана в заглавния файл stdio.h
Стандартната библиотека на C предоставя различни функции за четене и запис на файлове по знаци или като низ с фиксирана дължина.
Пишете във файла
Ето най-простите функции за запис на знаци в потока:
int fputc ( int c , ФАЙЛ *fp );
Функцията fputc () записва символната стойност на параметъра c в изходния поток, към който сочи fp. Ако записите са успешни, той връща писмения знак и EOF, ако възникне грешка. Можете да използвате следната функция, за да напишете в потока низ, завършващ с нула:
int fputs (const char *s, FILE *fp);
Функцията fputs () записва низа s в изходния поток, където сочи fp. Ако записите са успешни, той връща неотрицателна стойност и EOF, ако възникне грешка. Можете също да използвате функцията на int fprintf (FILE * fp, const char * format,...) записва низ във файла. Опитайте следния пример:
Забележка: Уверете се, че имате налична tmp директория и ако не съществува, първо трябва да я създадете на вашия компютър.
/ tmp обикновено е временна директория в системата Linux. Ако работите в системата Windows, трябва да я промените до съществуваща директория в локалната среда, като например: C: tmp, D: tmp и т.н.
жив пример
#включи
Когато горният код се компилира и изпълни, той създава нов файл test.txt в директорията / tmp. И пише на два реда, използвайки две различни функции. Нека прочетем този файл.
Прочетете файла
Следното е най-простата функция за четене на единичен знак от файл:
int fgetc (ФАЙЛ * fp);
Функцията fgetc () чете символ от входния файл, към който сочи fp. Върнатата стойност е символът за четене и EOF, ако възникне грешка. Следната функция ви позволява да четете низ от поток:
char *fgets (char *buf, int n, FILE *fp);
Функцията fgets () чете n-1 знака от входния поток, насочен от fp. Той копира прочетения низ в буфера buf и добавя нулев знак в края, за да прекрати низа.
Ако тази функция срещне символ с прекъсната линия '\ n' или EOF на края на файла преди прочитане на последния знак, тогава се връща само към прочетените знаци, включително прекъсвания на редове. Можете също така да използвате функцията int fscanf (FILE * fp, const char * format,...), за да прочетете низа от файла, но той спира да чете, когато срещне първия интервал и прекъсване на реда.
жив пример
#включи
Когато кодът по-горе се компилира и изпълни, той чете файловете, създадени в предишния раздел, като дава следните резултати:
1: Това 2: тества за fprintf...
3: Това е тестване за fputs...
Първо, методът на fscanf() чете само Това .защото среща интервал отзад. Второ, извикайте functon fgets (), за да прочетете оставащата част до края на реда. Накрая извикайте fgets (), за да прочетете напълно втория ред.
Двоична I/O функция
Следните две функции се използват за двоичен вход и изход:
size_t fread (void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file); size_t fwrite (const void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file);
И двете функции се четат и записват за блокове за съхранение - обикновено масиви или структури.
По-горе относно четенето и записването на C файл принадлежи на HDV Phoelectron Technology Ltd., софтуерна техническа операция. И компанията за мрежово оборудване (като: ACONU/ комуникацияONU/ интелигентенONU/ фибриONU, и т.н.) събра мощен софтуерен екип, за всеки клиент да персонализира изключителните изисквания, които се нуждаят от него, също така да направи нашите продукти по-интелигентни и напреднали.