C Správa súborov
Do súboru je možné uložiť veľké množstvo trvalých údajov. Rovnako ako mnoho iných jazykov aj „C“ poskytuje nasledujúce funkcie správy súborov,
- Vytvorenie súboru
- Otvorenie súboru
- Čítanie súboru
- Zápis do súboru
- Zatvorenie súboru
Nasledujú najdôležitejšie funkcie správy súborov dostupné v „C“.
funkcia | účel |
fopen () | Vytvorenie súboru alebo otvorenie existujúceho súboru |
fclose () | Zatvorenie súboru |
fprintf () | Zápis bloku údajov do súboru |
fscanf () | Čítanie údajov o bloku zo súboru |
getc () | Číta jeden znak zo súboru |
putc () | Zapíše jeden znak do súboru |
getw () | Číta celé číslo zo súboru |
putw () | Zápis celého čísla do súboru |
fseek () | Nastaví pozíciu ukazovateľa súboru na určené miesto |
ftell () | Vráti aktuálnu pozíciu ukazovateľa súboru |
pretočiť späť () | Nastaví ukazovateľ súboru na začiatok súboru |
V tomto návode sa naučíte
- Ako vytvoriť súbor
- Ako zavrieť súbor:
- Zápis do súboru
- Funkcia fputc ():
- Funkcia fputs ():
- Funkcia fprintf ():
- Čítanie údajov zo súboru
- Interaktívne čítanie a zápis súborov pomocou príkazov getc a putc
Ako vytvoriť súbor
Kedykoľvek chcete pracovať so súborom, je prvým krokom vytvorenie súboru. Súbor nie je nič iné ako priestor v pamäti, kde sú uložené dáta.
Na vytvorenie súboru v programe „C“ sa používa nasledujúca syntax,
FILE *fp;fp = fopen ("file_name", "mode");
Vo vyššie uvedenej syntaxi je súbor dátová štruktúra, ktorá je definovaná v štandardnej knižnici.
fopen je štandardná funkcia, ktorá sa používa na otvorenie súboru.
- Ak súbor v systéme nie je, vytvorí sa a potom sa otvorí.
- Ak je súbor v systéme už prítomný, otvorí sa priamo pomocou tejto funkcie.
fp je ukazovateľ súboru, ktorý ukazuje na typový súbor.
Pri každom otvorení alebo vytvorení súboru musíte určiť, čo so súborom urobíte. Súbor v programovaní „C“ je možné vytvoriť alebo otvoriť na účely čítania / zápisu. Režim sa používa na určenie, či chcete otvoriť súbor na niektoré z nižšie uvedených účelov. Nasledujú rôzne typy režimov v programovaní „C“, ktoré je možné použiť pri práci so súborom.
Režim súborov | Popis |
r | Otvorte súbor na čítanie. Ak je súbor v režime čítania, nevymažú sa žiadne údaje, ak sa už v systéme nachádza. |
w | Otvorte súbor na písanie. Ak je súbor v režime písania, vytvorí sa nový súbor, ak vôbec neexistuje. Ak je súbor v systéme už prítomný, potom sa všetky údaje v ňom skrátia a otvoria sa na účely zápisu. |
a | Otvorte súbor v režime pridania. Ak je súbor v režime pridania, otvorí sa. Obsah súboru sa nezmení. |
r + | otvorené na čítanie a písanie od začiatku |
w + | otvorené na čítanie a zápis, prepisovanie súboru |
a + | otvorené na čítanie a zápis a pripojenie k súboru |
V danej syntaxi sú názov súboru a režim špecifikované ako reťazce, preto musia byť vždy uzavreté v úvodzovkách.
Príklad:
#includeint main() {FILE *fp;fp = fopen ("data.txt", "w");}
Výkon:
Súbor sa vytvorí v rovnakom priečinku, do ktorého ste uložili svoj kód.
Môžete určiť cestu, kde chcete vytvoriť svoj súbor
#includeint main() {FILE *fp;fp = fopen ("D://data.txt", "w");}
Ako zavrieť súbor
Zakaždým, keď sa operácie so súborom skončia, mali by ste súbor zavrieť. Znamená to, že obsah a odkazy na súbor sú ukončené. Tým sa zabráni náhodnému poškodeniu pilníka.
„C“ poskytuje funkciu fclose na vykonávanie operácie zatvárania súborov. Syntax fclose je nasledovná,
fclose (file_pointer);
Príklad:
FILE *fp;fp = fopen ("data.txt", "r");fclose (fp);
Funkcia fclose berie ukazovateľ súboru ako argument. Súbor asociovaný s ukazovateľom súboru sa potom uzavrie pomocou funkcie fclose. Vráti 0, ak bolo zatvorenie úspešné, a EOF (koniec súboru), ak došlo k chybe pri zatváraní súboru.
Po zatvorení súboru je možné rovnaký ukazovateľ súboru použiť aj v prípade iných súborov.
V programovaní „C“ sa súbory automaticky ukončia po ukončení programu. Dobrým programovacím postupom je ručné zatvorenie súboru napísaním funkcie fclose.
Zápis do súboru
V C, keď píšete do súboru, musia byť výslovne pridané znaky nového riadku '\ n'.
Knižnica stdio ponúka potrebné funkcie na zápis do súboru:
- fputc (char, file_pointer) : Zapíše znak do súboru, na ktorý odkazuje file_pointer.
- fputs (str, file_pointer) : Zapíše reťazec do súboru, na ktorý ukazuje file_pointer.
- fprintf (file_pointer, str, variable_lists) : Vypíše reťazec do súboru, na ktorý ukazuje file_pointer. Reťazec môže voliteľne obsahovať špecifikátory formátu a zoznam premenných variable_lists.
Nasledujúci program ukazuje, ako vykonať zápis do súboru:
Funkcia 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;}
Výkon:
Vyššie uvedený program zapisuje jeden znak do súboru fputc_test.txt, kým nedosiahne ďalší riadok so symbolom „\ n“, ktorý označuje, že veta bola úspešne napísaná. Proces spočíva v prijatí každého znaku poľa a jeho zapísaní do súboru.
- Vo vyššie uvedenom programe sme vytvorili a otvorili súbor s názvom fputc_test.txt v režime zápisu a deklarovali náš reťazec, ktorý sa do súboru zapíše.
- Operáciu zápisu znaku po znaku robíme pomocou slučky for a každý znak vkladáme do nášho súboru, kým sa nestretne so znakom „\ n“, potom sa súbor uzavrie pomocou funkcie fclose.
Funkcia 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);}
VÝKON:
- Vo vyššie uvedenom programe sme vytvorili a otvorili súbor s názvom fputs_test.txt v režime zápisu.
- Potom, čo urobíme operáciu zápisu pomocou funkcie fputs () napísaním troch rôznych reťazcov
- Potom sa súbor uzavrie pomocou funkcie fclose.
Funkcia 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;}
VÝKON:
- Vo vyššie uvedenom programe sme vytvorili a otvorili súbor s názvom fprintf_test.txt v režime zápisu.
- Po vykonaní operácie zápisu pomocou funkcie fprintf () napísaním reťazca sa súbor uzavrie pomocou funkcie fclose.
Čítanie údajov zo súboru
Existujú tri rôzne funkcie určené na čítanie údajov zo súboru
- fgetc (file_pointer): Vráti nasledujúci znak zo súboru, na ktorý ukazuje ukazovateľ súboru. Po dosiahnutí konca súboru sa EOF odošle späť.
- fgets (buffer, n, file_pointer): Načíta zo súboru n-1 znakov a uloží reťazec do medzipamäte, v ktorej je ako posledný znak pripojený znak NULL '\ 0'.
- fscanf (file_pointer, conversion_specifiers, variable_adress) : Používa sa na analýzu a analýzu údajov. Číta znaky zo súboru a pomocou špecifikátorov prevodu priraďuje vstup do zoznamu ukazovateľov premenných variable_adress. Majte na pamäti, že rovnako ako v prípade programu scanf, fscanf prestane čítať reťazec, keď sa vyskytne medzera alebo nový riadok.
Nasledujúci program demonštruje čítanie zo súboru fputs_test.txt pomocou funkcií fgets (), fscanf () a 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;}
Výsledok:
----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
- Vo vyššie uvedenom programe sme otvorili súbor s názvom „fprintf_test.txt“, ktorý bol predtým napísaný pomocou funkcie fprintf (), a obsahuje reťazec „Learning C with Guru99“. Čítame to pomocou funkcie fgets (), ktorá číta riadok po riadku, kde veľkosť vyrovnávacej pamäte musí stačiť na to, aby zvládla celý riadok.
- Znovu otvoríme súbor, aby sme obnovili smerový súbor tak, aby ukazoval na jeho začiatok. Vytvorte rôzne premenné reťazcov, aby ste každé slovo spracovali osobitne. Vytlačením premenných zobrazíte ich obsah. Fscanf () sa používa hlavne na extrakciu a analýzu údajov zo súboru.
- Znovu otvorte súbor, čím vynulujete ukazovateľ tak, aby ukazoval na jeho začiatok. Čítajte údaje a tlačte ich zo súboru po znakoch pomocou funkcie getc (), až kým sa nestretne s príkazom EOF
- Po vykonaní súboru operácie čítania s použitím rôznych variantov sme súbor opäť uzavreli pomocou funkcie fclose.
Interaktívne čítanie a zápis súborov pomocou príkazov getc a putc
Toto sú najjednoduchšie operácie so súbormi. Getc znamená get charakter a putc znamená put charakter. Tieto dve funkcie sa používajú na spracovanie iba jedného znaku súčasne.
Nasledujúci program demonštruje funkcie spracovania súborov v programovaní „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;}
Výkon:
- Vo vyššie uvedenom programe sme vytvorili a otvorili súbor s názvom ukážka v režime zápisu.
- Po vykonaní operácie zápisu sa súbor uzavrie pomocou funkcie fclose.
- Opäť sme otvorili súbor, ktorý teraz obsahuje údaje v režime čítania. Smyčka while sa bude vykonávať, kým sa nenájde eof. Akonáhle sa nájde koniec súboru, operácia sa ukončí a údaje sa zobrazia pomocou funkcie printf.
- Po vykonaní operácie čítania sa súbor opäť uzavrie pomocou funkcie fclose.
Zhrnutie
- Súbor je priestor v pamäti, kde sú uložené údaje.
- Programovanie „C“ poskytuje rôzne funkcie na prácu so súborom.
- Mechanizmus manipulácie so súbormi sa nazýva správa súborov.
- Pred vykonaním operácií s ním musí byť súbor otvorený.
- Súbor je možné otvoriť v režime čítania, zápisu alebo prílohy.
- Funkcie Getc a putc sa používajú na čítanie a zápis jedného znaku.
- Funkcia fscanf () umožňuje čítať a analyzovať údaje zo súboru
- Môžeme prečítať (pomocou funkcie getc ) celý súbor opakovaním, aby sme pokryli celý súbor, kým nenarazíte na EOF
- Do súboru môžeme písať po vytvorení jeho názvu pomocou funkcie fprintf () a musí mať na konci reťazcového textu znak nového riadku.