C Управление на файлове
Файлът може да се използва за съхраняване на голям обем постоянни данни. Подобно на много други езици, "C" предлага следните функции за управление на файлове,
- Създаване на файл
- Отваряне на файл
- Четене на файл
- Записване във файл
- Затваряне на файл
Следват най-важните функции за управление на файлове, налични в „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 + | отворен за четене и писане, добавяне към файл |
В дадения синтаксис името на файла и режимът са посочени като низове, поради което те винаги трябва да бъдат затворени в двойни кавички.
Пример:
#includeint main() {FILE *fp;fp = fopen ("data.txt", "w");}
Изход:
Файлът се създава в същата папка, където сте запазили кода си.
Можете да посочите пътя, където искате да създадете вашия файл
#includeint 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 ():
#includeint 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", който показва, че изречението е написано успешно. Процесът е да вземете всеки знак от масива и да го запишете във файла.
- В горната програма създадохме и отворихме файл, наречен fputc_test.txt в режим на запис, и декларирахме нашия низ, който ще бъде записан във файла.
- Правим операция за запис на символ по символ, използвайки цикъл for, и поставяме всеки знак в нашия файл, докато се срещне символът "\ n", след което файлът се затваря с помощта на функцията fclose.
fputs () Функция:
#includeint 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);}
ИЗХОД:
- В горната програма създадохме и отворихме файл, наречен fputs_test.txt в режим на запис.
- След като направим операция за запис, използвайки функцията fputs (), като напишем три различни низа
- След това файлът се затваря с помощта на функцията fclose.
Функция fprintf ():
#includeint 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;}
ИЗХОД:
- В горната програма създадохме и отворихме файл, наречен fprintf_test.txt в режим на запис.
- След като операцията за запис се извърши с помощта на функцията 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 () съответно:
#includeint 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
- В горната програма отворихме файла, наречен „fprintf_test.txt“, който преди това беше написан с помощта на функцията fprintf () и съдържа низ „Learning C with Guru99“. Прочитаме го с помощта на функцията fgets (), която чете ред по ред, където размерът на буфера трябва да е достатъчен за обработка на целия ред.
- Ние отваряме файла отново, за да нулираме файла с показалеца към точката в началото на файла. Създайте различни низови променливи, за да обработвате всяка дума поотделно. Отпечатайте променливите, за да видите съдържанието им. Fscanf () се използва главно за извличане и анализиране на данни от файл.
- Отворете отново файла, за да нулирате файла с показалеца до точката в началото на файла. Прочетете данните и ги отпечатайте от символа на файла, използвайки функцията getc (), докато се срещне операторът EOF
- След като извършихме операционен файл за четене, използвайки различни варианти, отново затворихме файла, използвайки функцията fclose.
Интерактивно четене и писане на файлове с getc и putc
Това са най-простите файлови операции. Getc означава символа get, а putc означава символа put. Тези две функции се използват за обработка само на един символ наведнъж.
Следващата програма демонстрира функциите за обработка на файлове при програмиране на 'C':
#includeint 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;}
Изход:
- В горната програма създадохме и отворихме файл, наречен демо в режим на запис.
- След като се извърши операция за запис, файлът се затваря с помощта на функцията fclose.
- Отново отворихме файл, който сега съдържа данни в режим на четене. Цикълът while ще се изпълни, докато eof бъде намерен. След като се намери края на файла, операцията ще бъде прекратена и данните ще бъдат показани с помощта на функцията printf.
- След извършване на операция за четене файлът отново се затваря с помощта на функцията fclose.
Обобщение
- Файлът е пространство в паметта, където се съхраняват данни.
- Програмирането „C“ предоставя различни функции за работа с файл.
- Механизмът за манипулиране с файловете се нарича управление на файлове.
- Файл трябва да бъде отворен преди извършване на операции върху него.
- Файл може да се отвори в режим на четене, запис или добавяне.
- Функциите Getc и Putc се използват за четене и запис на един символ.
- Функцията fscanf () позволява да чете и анализира данни от файл
- Можем да прочетем (с помощта на функцията getc ) цял файл, като циклично покриваме целия файл, докато се срещне EOF
- Можем да пишем във файл след създаване на името му, като използваме функцията fprintf () и той трябва да има символа за нов ред в края на текста на низа.