Programy zvyčajne potrebujú dátovú štruktúru na ukladanie dát, ktoré môžu potrebovať počas vykonávania. Normálne sú tieto údaje uložené v premenných alebo poliach. Problém je v tom, že sa stratí hneď, ako program dokončí vykonávanie. Je to preto, že ide o dočasné pamäťové miesta.
Ak by ste potrebovali, aby boli vaše dáta dostupné aj po spustení programu, museli by ste ich uložiť do súboru. Súbory môžu byť buď textové alebo binárne.
Tento článok sa zameriava na to, ako môžete spravovať textové súbory v jazyku C. Tu je to, čo potrebujete vedieť.
Otvorenie súboru
Po prvé, je dôležité vedieť, že pri práci so súbormi musíte vždy deklarovať ukazovateľ typu FILE . Tento ukazovateľ je potrebný na umožnenie komunikácie medzi súborom a programom.
FILE *filePtr;
Aby ste mohli písať, čítať alebo aktualizovať súbor, musíte ho najprv otvoriť. C poskytuje na to štandardnú knižničnú funkciu fopen() .
Súvisiace články: Ako skontrolovať, či sú dve matice totožné s programovaním
Táto funkcia má dva reťazcové argumenty: názov súboru a režim. Ak sa súbor, ktorý otvárate, nenachádza v adresári programu, v ktorom sa práve nachádzate, môžete namiesto názvu súboru zadať cestu k nemu.
Pozrite si nižšie uvedenú syntax o tom, ako používať fopen() :
filePtr = fopen("filename.txt", "mode");
Premenná filePtr je ukazovateľ typu FILE . Argument režim sa vzťahuje na spôsob, akým je potrebné otvoriť súbor. To znamená, aké funkcie sa očakávajú v súbore.
Existujú tri režimy, v ktorých môžete otvoriť súbor v C. Tieto režimy sú r, w a a . Na čítanie súboru použite r . Ak chcete zapisovať do súboru, použite w . Ak chcete pridať údaje na koniec súboru, použite súbor .
Ak ste napríklad plánovali čítať obsah súboru s názvom programming.txt , potom by ste použili nasledujúce vyhlásenie:
filePtr = fopen("programming.txt" , "r");
Okrem r, w a a existujú ďalšie rozšírené režimy. Nižšie je diskusia o týchto režimoch pre textové súbory:
r+ a w+ : Oba tieto režimy sa používajú na otvorenie súboru na čítanie a zápis. Rozdiel je v tom, že r+ spôsobí, že fopen() vráti NULL, ak tento súbor neexistuje, zatiaľ čo w+ namiesto toho vytvorí súbor. Ďalšia vec, ktorú treba poznamenať, je, že w+ prepíše súbor, ak existuje.
a+ : Tento režim sa používa na otvorenie súboru na pridanie a prečítanie. Ak súbor neexistuje, vytvorí sa.
Písanie a čítanie
Na zápis a čítanie do súboru môžete použiť funkcie fprintf a fscanf . Tieto dve funkcie sú funkčne porovnateľné s funkciami printf a scanf v základných I/O.
#include int main(void){ // pointer declaration FILE *filePtr; filePtr = fopen("myfile.txt", "w"); //the message below will be written to myfile.txt fprintf(filePtr, "%s", "Files are permanent memory locations."); }
Vyššie uvedený kód ukazuje, ako môžete vytvoriť súbor s názvom myfile.txt a potom doň uložiť správu. Ak si chcete prečítať obsah novovytvoreného súboru, pozrite si kód nižšie.
#include #include int main(void){ char message[196]; FILE *filePtr; filePtr = fopen("myfile.txt", "r"); if (filePtr == NULL){ printf("Error opening the file"); //program exists if the pointer returns NULL exit(1); } fscanf(filePtr,"%s", &message); printf("The message is: %s", message); fclose(filePtr); }
Keď skompilujete a spustíte vyššie uvedený kód, váš výstup bude Files. Všimnete si, že toto nie je celá správa, ktorú ste uložili v súbore myfile.txt . Netreba sa však báť. Toto nie je chyba v kóde.
Súvisiace články: Ako zistíte hodnotu ASCII postavy?
Keď program narazí na medzeru, prestane čítať obsah súboru. Ak by bola správa namiesto toho napísaná ako Súbory-sú-permanentné-umiestnenia v pamäti, potom by ste dostali celý výstup na vašu obrazovku.
V oboch uvedených príkladoch kódu ste si mali všimnúť príkaz fclose() . Po použití musíte súbor (textový alebo binárny) vždy zavrieť.
Pohľad na programovanie v C++
Po dosiahnutí tejto úrovne spracovania súborov v jazyku C ste pravdepodobne nadpriemerným používateľom tohto jazyka. To tiež znamená, že by ste mali hľadať efektívnejšie spôsoby programovania.
C++ je odpoveď. Je to objektovo orientovaná verzia C. Teraz by ste si mali vyskladať rukávy, aby ste sa naučili tento trendový jazyk.