C Введення / виведення файлів: створення, відкриття, читання, запис та закриття файлу

Зміст:

Anonim

C Управління файлами

Файл можна використовувати для зберігання великого обсягу постійних даних. Як і багато інших мов, "C" пропонує наступні функції управління файлами,

  1. Створення файлу
  2. Відкриття файлу
  3. Читання файлу
  4. Запис у файл
  5. Закриття файлу

Нижче наведено найважливіші функції управління файлами, доступні в "C"

функція призначення
fopen () Створення файлу або відкриття існуючого файлу
fclose () Закриття файлу
fprintf () Запис блоку даних у файл
fscanf () Зчитування даних блоку з файлу
getc () Зчитує один файл із файлу
putc () Записує один файл у файл
getw () Зчитує ціле число з файлу
putw () Запис цілого числа у файл
fseek () Встановлює позицію вказівника на файл до вказаного місця
ftell () Повертає поточну позицію вказівника на файл
перемотування назад Встановлює покажчик файлу на початку файлу

У цьому підручнику ви дізнаєтесь-

  • Як створити файл
  • Як закрити файл:
  • Запис у файл
    • Функція fputc ():
    • fputs () Функція:
    • Функція fprintf ():
  • Зчитування даних із файлу
  • Інтерактивне читання та записування файлів за допомогою getc та putc

Як створити файл

Всякий раз, коли ви хочете працювати з файлом, першим кроком є ​​створення файлу. Файл - це не що інше, як простір у пам'яті, де зберігаються дані.

Для створення файлу в програмі 'C' використовується наступний синтаксис,

FILE *fp;fp = fopen ("file_name", "mode");

У наведеному вище синтаксисі файл є структурою даних, яка визначена у стандартній бібліотеці.

fopen - це стандартна функція, яка використовується для відкриття файлу.

  • Якщо файл відсутній у системі, він створюється, а потім відкривається.
  • Якщо файл вже присутній у системі, він безпосередньо відкривається за допомогою цієї функції.

fp - це вказівник на файл, який вказує на файл типу.

Кожного разу, коли ви відкриваєте або створюєте файл, ви повинні вказати, що ви збираєтесь робити з файлом. Файл у програмуванні на C може бути створений або відкритий для читання / запису. Режим використовується, щоб вказати, чи потрібно відкривати файл для будь-якої з наведених нижче цілей. Нижче наведено різні типи режимів у програмуванні на C, які можна використовувати під час роботи з файлом.

Режим файлу Опис
р Відкрийте файл для читання. Якщо файл перебуває в режимі читання, дані не видаляються, якщо файл уже присутній у системі.
w Відкрийте файл для написання. Якщо файл перебуває в режимі запису, тоді створюється новий файл, якщо файл взагалі не існує. Якщо файл уже присутній у системі, то всі дані всередині файлу усічуються і відкриваються для написання.
a Відкрийте файл у режимі додавання. Якщо файл перебуває в режимі додавання, файл відкривається. Вміст у файлі не змінюється.
r + відкритий для читання та письма з самого початку
w + відкритий для читання та запису, перезаписуючи файл
a + відкритий для читання та письма, додається до файлу

У даному синтаксисі ім'я файлу та режим вказані як рядки, отже, вони завжди повинні міститися в подвійних лапках.

Приклад:

#include int main() {FILE *fp;fp = fopen ("data.txt", "w");}

Вихід:

Файл створюється в тій самій папці, де ви зберегли свій код.

Ви можете вказати шлях, куди потрібно створити файл

#include int main() {FILE *fp;fp = fopen ("D://data.txt", "w");}

Як закрити файл

Завжди слід закривати файл, коли операції з ним закінчуються. Це означає, що вміст та посилання на файл припинені. Це запобігає випадковому пошкодженню файлу.

'C' забезпечує функцію fclose для виконання операції закриття файлу. Синтаксис fclose такий,

fclose (file_pointer);

Приклад:

FILE *fp;fp = fopen ("data.txt", "r");fclose (fp);

Функція fclose приймає в якості аргументу вказівник на файл. Потім файл, пов'язаний з покажчиком файлу, закривається за допомогою функції fclose. Він повертає 0, якщо закриття було успішним, і EOF (кінець файлу), якщо під час закриття файлу сталася помилка.

Після закриття файлу той самий вказівник на файл також можна використовувати з іншими файлами.

У програмуванні на "С" файли автоматично закриваються, коли програму припиняється. Закриття файлу вручну шляхом написання функції fclose - хороша практика програмування.

Запис у файл

У C, коли ви пишете у файл, символи нового рядка '\ n' повинні бути явно додані.

Бібліотека stdio пропонує необхідні функції для запису у файл:

  • fputc (char, file_pointer) : Він пише символ у файл, на який вказує file_pointer.
  • fputs (str, file_pointer) : Він записує рядок у файл, на який вказує file_pointer.
  • fprintf (file_pointer, str, varia__list) : друкує рядок у файл, на який вказує file_pointer. Рядок може додатково включати специфікатори формату та список змінних varia_lists.

Програма нижче показує, як виконати запис у файл:

Функція fputc ():

#include int main() {int i;FILE * fptr;char fn[50];char str[] = "Guru99 Rocks\n";fptr = fopen("fputc_test.txt", "w"); // "w" defines "writing mode"for (i = 0; str[i] != '\n'; i++) {/* write to file using fputc() function */fputc(str[i], fptr);}fclose(fptr);return 0;}

Вихід:

Вищевказана програма записує один символ у файл fputc_test.txt, поки не досягне символу наступного рядка "\ n", що вказує на те, що речення було успішно записано. Процес полягає в тому, щоб взяти кожен символ масиву і записати його у файл.

  1. У наведеній вище програмі ми створили та відкрили файл із назвою fputc_test.txt у режимі запису та оголосили наш рядок, який буде записаний у файл.
  2. Ми виконуємо операцію запису символів за допомогою циклу for і розміщуємо кожен символ у нашому файлі, доки не зустрінеться символ "\ n", після чого файл буде закритий за допомогою функції fclose.

fputs () Функція:

#include int main() {FILE * fp;fp = fopen("fputs_test.txt", "w+");fputs("This is Guru99 Tutorial on fputs,", fp);fputs("We don't need to use for loop\n", fp);fputs("Easier than fputc function\n", fp);fclose(fp);return (0);}

ВИХІД:

  1. У наведеній вище програмі ми створили та відкрили файл із назвою fputs_test.txt у режимі запису.
  2. Після того, як ми виконаємо операцію запису за допомогою функції fputs (), записавши три різні рядки
  3. Потім файл закривається за допомогою функції fclose.

Функція fprintf ():

#include int main() {FILE *fptr;fptr = fopen("fprintf_test.txt", "w"); // "w" defines "writing mode"/* write to file */fprintf(fptr, "Learning C with Guru99\n");fclose(fptr);return 0;}

ВИХІД:

  1. У наведеній вище програмі ми створили та відкрили файл із назвою fprintf_test.txt у режимі запису.
  2. Після того, як операція запису виконується за допомогою функції fprintf () шляхом введення рядка, файл закривається за допомогою функції fclose.

Зчитування даних із файлу

Існує три різні функції, призначені для зчитування даних із файлу

  • fgetc (file_pointer): повертає наступний символ із файлу, на який вказує вказівник на файл. Коли кінець файлу досягнуто, EOF відправляється назад.
  • fgets (buffer, n, file_pointer): зчитує з файлу n-1 символів і зберігає рядок у буфері, в якому як останній символ додається NULL-символ '\ 0'.
  • fscanf (покажчик_файлу, специфікатори_перетворення, змінні_адреси) : використовується для аналізу та аналізу даних. Він зчитує символи з файлу і призначає вхідні дані до списку покажчиків змінних_адреси змінних за допомогою специфікаторів перетворення. Майте на увазі, що як і у випадку із scanf, fscanf припиняє читати рядок, коли зустрічається пробіл або рядок.

Наступна програма демонструє читання з файлу fputs_test.txt за допомогою функцій fgets (), fscanf () та fgetc () відповідно:

#include int main() {FILE * file_pointer;char buffer[30], c;file_pointer = fopen("fprintf_test.txt", "r");printf("----read a line----\n");fgets(buffer, 50, file_pointer);printf("%s\n", buffer);printf("----read and parse data----\n");file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointerchar str1[10], str2[2], str3[20], str4[2];fscanf(file_pointer, "%s %s %s %s", str1, str2, str3, str4);printf("Read String1 |%s|\n", str1);printf("Read String2 |%s|\n", str2);printf("Read String3 |%s|\n", str3);printf("Read String4 |%s|\n", str4);printf("----read the entire file----\n");file_pointer = fopen("fprintf_test.txt", "r"); //reset the pointerwhile ((c = getc(file_pointer)) != EOF) printf("%c", c);fclose(file_pointer);return 0;}

Результат:

----read a line----Learning C with Guru99----read and parse data----Read String1 |Learning|Read String2 |C|Read String3 |with|Read String4 |Guru99|----read the entire file----Learning C with Guru99

  1. У наведеній вище програмі ми відкрили файл "fprintf_test.txt", який раніше писали за допомогою функції fprintf (), і він містить рядок "Learning C with Guru99". Ми читаємо його за допомогою функції fgets (), яка зчитує рядок за рядком, де розміру буфера має бути достатньо для обробки всього рядка.
  2. Ми знову відкриваємо файл, щоб скинути файл вказівника на точку на початку файлу. Створіть різні змінні рядків для обробки кожного слова окремо. Надрукуйте змінні, щоб побачити їх вміст. Fscanf () в основному використовується для вилучення та синтаксичного аналізу даних із файлу.
  3. Повторно відкрийте файл, щоб скинути файл вказівника на точку на початку файлу. Зчитуйте дані та друкуйте їх із символу файлу за символом за допомогою функції getc (), доки не зустрінеться оператор EOF
  4. Після виконання файлу операції читання з використанням різних варіантів, ми знову закрили файл за допомогою функції fclose.

Інтерактивне читання та записування файлів за допомогою getc та putc

Це найпростіші файлові операції. Getc означає символ символу get, а putc означає символ символу put. Ці дві функції використовуються для обробки лише одного символу одночасно.

Наступна програма демонструє функції обробки файлів у програмуванні 'C':

#include int main() {FILE * fp;char c;printf("File Handling\n");//open a filefp = fopen("demo.txt", "w");//writing operationwhile ((c = getchar()) != EOF) {putc(c, fp);}//close filefclose(fp);printf("Data Entered:\n");//readingfp = fopen("demo.txt", "r");while ((c = getc(fp)) != EOF) {printf("%c", c);}fclose(fp);return 0;}

Вихід:

  1. У вищезазначеній програмі ми створили та відкрили файл із назвою demo в режимі запису.
  2. Після виконання операції запису файл закривається за допомогою функції fclose.
  3. Ми знову відкрили файл, який тепер містить дані в режимі читання. Цикл while буде виконуватися, поки не буде знайдено eof. Як тільки кінець файлу буде знайдено, операція буде припинена, а дані відображатимуться за допомогою функції printf.
  4. Після виконання операції зчитування файл знову закривається за допомогою функції fclose.

Резюме

  • Файл - це простір у пам'яті, де зберігаються дані.
  • Програмування "C" надає різні функції для роботи з файлом.
  • Механізм маніпулювання файлами називається управлінням файлами.
  • Файл потрібно відкрити перед виконанням операцій з ним.
  • Файл можна відкрити в режимі читання, запису або додавання.
  • Функції Getc та Putc використовуються для читання та запису одного символу.
  • Функція fscanf () дозволяє читати та аналізувати дані з файлу
  • Ми можемо прочитати (за допомогою функції getc ) цілий файл, циклічно охоплюючи весь файл, доки не зустрінеться EOF
  • Ми можемо писати у файл після створення його імені, використовуючи функцію fprintf (), і він повинен мати символ нового рядка в кінці тексту рядка.