C Файл I / O: Създаване, отваряне, четене, записване и затваряне на файл

Съдържание:

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', които могат да се използват по време на работа с файл.

Файлов режим Описание
r Отворете файл за четене. Ако даден файл е в режим на четене, тогава не се изтриват данни, ако файлът вече присъства в системата.
w Отворете файл за писане. Ако файлът е в режим на запис, тогава се създава нов файл, ако файлът изобщо не съществува. Ако файлът вече присъства в системата, тогава всички данни във файла се отрязват и се отварят за писане.
а Отворете файл в режим на добавяне. Ако даден файл е в режим на добавяне, той се отваря. Съдържанието във файла не се променя.
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 (края на файла), ако има грешка при затваряне на файла.

След затваряне на файла, един и същ файлов указател може да се използва и с други файлове.

При програмиране на „C“ файловете се затварят автоматично, когато програмата бъде прекратена. Ръчното затваряне на файл чрез писане на функция fclose е добра практика за програмиране.

Записване във файл

В C, когато пишете във файл, символите за нов ред '\ n' трябва да бъдат изрично добавени.

Библиотеката stdio предлага необходимите функции за записване във файл:

  • fputc (char, file_pointer) : Той записва символ във файла, посочен от file_pointer.
  • fputs (str, file_pointer) : Той записва низ във файла, посочен от file_pointer.
  • fprintf (file_pointer, str, променливи_списъци) : Той отпечатва низ към файла, посочен от 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 (file_pointer, conversion_specifiers, variable_adresses) : Използва се за анализ и анализ на данни. Той чете символи от файла и присвоява входа на списък с указатели на променливи variable_adresses, използвайки спецификатори за преобразуване. Имайте предвид, че както при 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. В горната програма създадохме и отворихме файл, наречен демо в режим на запис.
  2. След като се извърши операция за запис, файлът се затваря с помощта на функцията fclose.
  3. Отново отворихме файл, който сега съдържа данни в режим на четене. Цикълът while ще се изпълни, докато eof бъде намерен. След като се намери края на файла, операцията ще бъде прекратена и данните ще бъдат показани с помощта на функцията printf.
  4. След извършване на операция за четене файлът отново се затваря с помощта на функцията fclose.

Обобщение

  • Файлът е пространство в паметта, където се съхраняват данни.
  • Програмирането „C“ предоставя различни функции за работа с файл.
  • Механизмът за манипулиране с файловете се нарича управление на файлове.
  • Файл трябва да бъде отворен преди извършване на операции върху него.
  • Файл може да се отвори в режим на четене, запис или добавяне.
  • Функциите Getc и Putc се използват за четене и запис на един символ.
  • Функцията fscanf () позволява да чете и анализира данни от файл
  • Можем да прочетем (с помощта на функцията getc ) цял файл, като циклично покриваме целия файл, докато се срещне EOF
  • Можем да пишем във файл след създаване на името му, като използваме функцията fprintf () и той трябва да има символа за нов ред в края на текста на низа.