C Failu pārvaldība
Failu var izmantot, lai saglabātu lielu apjomu pastāvīgu datu. Tāpat kā daudzās citās valodās, arī C nodrošina šādas failu pārvaldības funkcijas,
- Faila izveide
- Faila atvēršana
- Faila lasīšana
- Rakstīšana failā
- Faila aizvēršana
Tālāk ir norādītas vissvarīgākās failu pārvaldības funkcijas, kas pieejamas “C”
funkciju | mērķim |
fopen () | Faila izveide vai esoša faila atvēršana |
fclose () | Faila aizvēršana |
fprintf () | Datu bloka ierakstīšana failā |
fscanf () | Bloka datu nolasīšana no faila |
getc () | No faila nolasa vienu rakstzīmi |
putc () | Uzraksta failā vienu rakstzīmi |
getw () | No faila nolasa veselu skaitli |
putw () | Vesela skaitļa rakstīšana failā |
fseek () | Iestata faila rādītāja pozīciju noteiktā vietā |
ftell () | Atgriež faila rādītāja pašreizējo atrašanās vietu |
pārtīt () | Faila rādītāju iestata faila sākumā |
Šajā apmācībā jūs uzzināsiet
- Kā izveidot failu
- Kā aizvērt failu:
- Rakstīšana failā
- fputc () Funkcija:
- ieejas () Funkcija:
- fprintf () Funkcija:
- Datu lasīšana no faila
- Interaktīvs failu lasīšana un rakstīšana ar getc un putc
Kā izveidot failu
Ikreiz, kad vēlaties strādāt ar failu, vispirms ir jāizveido fails. Fails nav nekas cits kā vieta atmiņā, kurā tiek glabāti dati.
Lai izveidotu failu programmā C, tiek izmantota sintakse,
FILE *fp;fp = fopen ("file_name", "mode");
Iepriekš minētajā sintaksē fails ir datu struktūra, kas definēta standarta bibliotēkā.
fopen ir standarta funkcija, ko izmanto faila atvēršanai.
- Ja faila sistēmā nav, tas tiek izveidots un pēc tam atvērts.
- Ja fails jau atrodas sistēmā, tas tiek tieši atvērts, izmantojot šo funkciju.
fp ir faila rādītājs, kas norāda uz tipa failu.
Ikreiz, kad atverat vai izveidojat failu, jums jānorāda, ko jūs darīsit ar failu. “C” programmēšanas failu var izveidot vai atvērt lasīšanas / rakstīšanas vajadzībām. Režīms tiek izmantots, lai norādītu, vai vēlaties atvērt failu kādam no tālāk norādītajiem mērķiem. Tālāk ir norādīti dažāda veida režīmi “C” programmēšanā, kurus var izmantot, strādājot ar failu.
Faila režīms | Apraksts |
r | Atveriet failu lasīšanai. Ja fails ir lasīšanas režīmā, dati netiek dzēsti, ja fails jau atrodas sistēmā. |
w | Atveriet failu rakstīšanai. Ja fails ir rakstīšanas režīmā, tiek izveidots jauns fails, ja fails vispār nepastāv. Ja fails jau atrodas sistēmā, visi failā esošie dati tiek saīsināti un tiek atvērti rakstīšanas vajadzībām. |
a | Atveriet failu pievienošanas režīmā. Ja fails ir pievienošanas režīmā, fails tiek atvērts. Faila saturs nemainās. |
r + | no sākuma atvērta lasīšanai un rakstīšanai |
w + | atvērts lasīšanai un rakstīšanai, faila pārrakstīšanai |
a + | atvērta lasīšanai un rakstīšanai, pievienošana failam |
Dotajā sintaksē faila nosaukums un režīms ir norādīts kā virknes, tāpēc tiem vienmēr jābūt iespiestiem pēdiņās.
Piemērs:
#includeint main() {FILE *fp;fp = fopen ("data.txt", "w");}
Izeja:
Fails tiek izveidots tajā pašā mapē, kurā esat saglabājis kodu.
Jūs varat norādīt ceļu, kur vēlaties izveidot failu
#includeint main() {FILE *fp;fp = fopen ("D://data.txt", "w");}
Kā aizvērt failu
Vienmēr ir jāaizver fails, kad ir beigušās operācijas ar failu. Tas nozīmē, ka faila saturs un saites tiek izbeigtas. Tas novērš nejaušu faila bojājumu.
'C' nodrošina funkciju fclose, lai veiktu faila aizvēršanas darbību. Fclose sintakse ir šāda,
fclose (file_pointer);
Piemērs:
FILE *fp;fp = fopen ("data.txt", "r");fclose (fp);
Funkcija fclose kā argumentu ņem faila rādītāju. Pēc tam ar fclose funkciju tiek aizvērts fails, kas saistīts ar faila rādītāju. Tas atgriež 0, ja aizvēršana bija veiksmīga, un EOF (faila beigas), ja faila aizvēršanas laikā radās kļūda.
Pēc faila aizvēršanas to pašu faila rādītāju var izmantot arī ar citiem failiem.
Programmā “C” faili tiek automātiski aizvērti, kad programma tiek pārtraukta. Manuāla faila aizvēršana, ierakstot fclose funkciju, ir laba programmēšanas prakse.
Rakstīšana failā
C rakstot failā, skaidri jāpievieno jaunas rindas rakstzīmes '\ n'.
Stdio bibliotēka piedāvā nepieciešamās funkcijas rakstīšanai failā:
- fputc (char, file_pointer) : tas raksta rakstzīmi failā, uz kuru norāda file_pointer.
- izejas (str, file_pointer) : tā raksta virkni failā, uz kuru norāda file_pointer.
- fprintf (file_pointer, str, variable_lists) : tas drukā virkni failā, uz kuru norāda file_pointer. Virkne pēc izvēles var ietvert formātu specifikatorus un mainīgo lielumu sarakstu variable_lists.
Zemāk redzamā programma parāda, kā veikt rakstīšanu failā:
fputc () Funkcija:
#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;}
Izeja:
Iepriekš minētā programma fputc_test.txt failā ieraksta vienu rakstzīmi, līdz tā sasniedz nākamo rindas simbolu "\ n", kas norāda, ka teikums ir veiksmīgi uzrakstīts. Process ir ņemt katru masīva rakstzīmi un ierakstīt to failā.
- Iepriekš minētajā programmā mēs esam izveidojuši un atvēruši failu ar nosaukumu fputc_test.txt rakstīšanas režīmā un paziņojam, ka mūsu virkne tiks ierakstīta failā.
- Mēs veicam rakstzīmju rakstzīmju rakstīšanas darbību, izmantojot cilpu, un katru rakstzīmi ievietojam failā, līdz tiek sastapta rakstzīme "\ n", pēc tam fails tiek aizvērts, izmantojot funkciju fclose.
ieejas () Funkcija:
#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);}
REZULTĀTS:
- Iepriekš minētajā programmā rakstīšanas režīmā esam izveidojuši un atvēruši failu ar nosaukumu fputs_test.txt.
- Pēc tam, kad mēs veicam rakstīšanas darbību, izmantojot funkciju fputs (), uzrakstot trīs dažādas virknes
- Pēc tam fails tiek aizvērts, izmantojot funkciju fclose.
fprintf () Funkcija:
#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;}
REZULTĀTS:
- Iepriekš minētajā programmā mēs esam izveidojuši un atvēruši failu ar nosaukumu fprintf_test.txt rakstīšanas režīmā.
- Pēc rakstīšanas darbības, izmantojot funkciju fprintf (), rakstot virkni, fails tiek aizvērts, izmantojot funkciju fclose.
Datu lasīšana no faila
Ir trīs dažādas funkcijas, kas paredzētas datu nolasīšanai no faila
- fgetc (file_pointer): tas atgriež nākamo rakstzīmi no faila, uz kuru norāda faila rādītājs. Kad faila beigas ir sasniegtas, EOF tiek nosūtīts atpakaļ.
- fgets (buferis, n, file_pointer): tas no faila nolasa n-1 rakstzīmes un glabā virkni buferī, kurā NULL rakstzīme '\ 0' ir pievienota kā pēdējā rakstzīme.
- fscanf (file_pointer, conversion_specifiers, variable_adresses) : To izmanto, lai parsētu un analizētu datus. Tas nolasa rakstzīmes no faila un piešķir ievadi mainīgo rādītāju sarakstam variable_adresses, izmantojot reklāmguvumu specifikatorus. Paturiet prātā, ka tāpat kā ar scanf, arī fscanf pārtrauc lasīt virkni, kad tiek parādīta atstarpe vai jauna rinda.
Šī programma parāda lasīšanu no faila fputs_test.txt, izmantojot funkcijas fgets (), fscanf () un 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;}
Rezultāts:
----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
- Iepriekš minētajā programmā mēs esam atvēruši failu ar nosaukumu "fprintf_test.txt", kas iepriekš tika uzrakstīts, izmantojot funkciju fprintf (), un tas satur virkni "Mācīšanās C ar Guru99". Mēs to lasījām, izmantojot funkciju fgets (), kas lasa pa rindai, kur bufera izmēram jābūt pietiekamam, lai apstrādātu visu līniju.
- Mēs atkārtoti atveram failu, lai rādītāja fails tiktu atiestatīts uz faila sākumu. Izveidojiet dažādus virkņu mainīgos, lai katru vārdu apstrādātu atsevišķi. Izdrukājiet mainīgos, lai redzētu to saturu. Fscanf () galvenokārt tiek izmantots datu iegūšanai un parsēšanai no faila.
- Atkārtoti atveriet failu, lai atiestatītu rādītāja failu uz faila sākumu. Lasiet datus un izdrukājiet tos no faila rakstzīmes pa rakstzīmēm, izmantojot funkciju getc (), līdz tiek sastādīts EOF paziņojums
- Pēc lasīšanas operācijas faila veikšanas, izmantojot dažādus variantus, mēs atkal aizvērām failu, izmantojot funkciju fclose.
Interaktīvs failu lasīšana un rakstīšana ar getc un putc
Šīs ir vienkāršākās failu darbības. Getc nozīmē get raksturs, un putc nozīmē put raksturs. Šīs divas funkcijas tiek izmantotas, lai vienlaikus apstrādātu tikai vienu rakstzīmi.
Šī programma demonstrē failu apstrādes funkcijas 'C' programmēšanā:
#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;}
Izeja:
- Iepriekš minētajā programmā mēs esam izveidojuši un atvēruši failu ar nosaukumu demo rakstīšanas režīmā.
- Pēc rakstīšanas darbības veikšanas fails tiek aizvērts, izmantojot funkciju fclose.
- Mēs atkal esam atvēruši failu, kurā tagad ir dati lasīšanas režīmā. Kādu laiku cikls tiks izpildīts, līdz tiks atrasts eof. Kad faila beigas ir atrastas, darbība tiks pārtraukta un dati tiks parādīti, izmantojot printf funkciju.
- Pēc lasīšanas operācijas fails atkal tiek aizvērts, izmantojot funkciju fclose.
Kopsavilkums
- Fails ir vieta atmiņā, kurā tiek glabāti dati.
- 'C' programmēšana nodrošina dažādas funkcijas, lai apstrādātu failu.
- Manipulācijas ar failiem mehānismu sauc par failu pārvaldību.
- Pirms darbību veikšanas ar to ir jāatver fails.
- Failu var atvērt lasīšanas, rakstīšanas vai pievienošanas režīmā.
- Getc un putc funkcijas tiek izmantotas, lai lasītu un rakstītu vienu rakstzīmi.
- Funkcija fscanf () ļauj nolasīt un parsēt datus no faila
- Mēs varam izlasīt (izmantojot funkciju getc ) visu failu, izveidojot cilpu, lai aptvertu visu failu, līdz tiek sastapta EOF
- Pēc faila nosaukuma izveidošanas mēs varam rakstīt failā, izmantojot funkciju fprintf (), un virknes teksta beigās tam ir jābūt jaunās līnijas rakstzīmei.