Ц И / О датотека: Стварање, отварање, читање, писање и затварање датотеке

Преглед садржаја:

Anonim

Ц Управљање датотекама

Датотека се може користити за чување велике количине трајних података. Као и многи други језици, и Ц нуди следеће функције управљања датотекама,

  1. Стварање датотеке
  2. Отварање датотеке
  3. Читање датотеке
  4. Писање у датотеку
  5. Затварање датотеке

Следе најважније функције управљања датотекама доступне у „Ц“

функцију сврха
фопен () Стварање датотеке или отварање постојеће датотеке
фцлосе () Затварање датотеке
фпринтф () Записивање блока података у датотеку
фсцанф () Читање података блока из датотеке
гетц () Чита један знак из датотеке
путц () Записује један знак у датотеку
гетв () Чита цео број из датотеке
путв () Записивање целог броја у датотеку
фсеек () Поставља положај показивача на датотеку на одређено место
фтелл () Враћа тренутну позицију показивача на датотеку
премотавање () Поставља показивач датотеке на почетак датотеке

У овом упутству ћете научити-

  • Како створити датотеку
  • Како затворити датотеку:
  • Писање у датотеку
    • фпутц () функција:
    • фпутс () функција:
    • фпринтф () Функција:
  • Читање података из датотеке
  • Интерактивно читање и писање датотека помоћу гетц и путц

Како створити датотеку

Кад год желите да радите са датотеком, први корак је стварање датотеке. Датотека није ништа друго до простор у меморији у коме се чувају подаци.

За креирање датотеке у програму 'Ц' користи се следећа синтакса,

FILE *fp;fp = fopen ("file_name", "mode");

У горњој синтакси, датотека је структура података која је дефинисана у стандардној библиотеци.

фопен је стандардна функција која се користи за отварање датотеке.

  • Ако датотека није присутна у систему, она се креира, а затим отвара.
  • Ако је датотека већ присутна на систему, она се директно отвара помоћу ове функције.

фп је показивач датотеке који показује на датотеку типа.

Кад год отворите или направите датотеку, морате да одредите шта ћете радити са датотеком. Датотека у програмирању 'Ц' може се створити или отворити за читање / писање. Режим се користи за одређивање да ли желите да отворите датотеку у било коју од доленаведених сврха. Следе различите врсте режима у програмирању 'Ц' које се могу користити током рада са датотеком.

Филе Моде Опис
р Отворите датотеку за читање. Ако је датотека у режиму читања, тада се не бришу подаци ако је датотека већ присутна на систему.
в Отворите датотеку за писање. Ако је датотека у режиму писања, тада се креира нова датотека ако датотека уопште не постоји. Ако је датотека већ присутна у систему, тада су сви подаци у датотеци скраћени и отворени су за писање.
а Отворите датотеку у режиму додавања. Ако је датотека у режиму додавања, датотека се отвара. Садржај датотеке се не мења.
р + отворен за читање и писање од почетка
в + отворен за читање и писање, преписивање датотеке
а + отворен за читање и писање, додавање у датотеку

У датој синтакси, назив датотеке и начин рада наведени су као низови, стога морају увек бити затворени у двоструке наводнике.

Пример:

#include int main() {FILE *fp;fp = fopen ("data.txt", "w");}

Излаз:

Датотека се креира у истој фасцикли у којој сте сачували код.

Можете одредити путању на којој желите да креирате датотеку

#include int main() {FILE *fp;fp = fopen ("D://data.txt", "w");}

Како затворити датотеку

Увек треба затворити датотеку кад год су операције над њом завршене. То значи да су садржај и везе до датотеке укинути. Ово спречава случајно оштећење датотеке.

'Ц' пружа функцију фцлосе за извођење операције затварања датотеке. Синтакса фцлосе је следећа,

fclose (file_pointer);

Пример:

FILE *fp;fp = fopen ("data.txt", "r");fclose (fp);

Функција фцлосе узима показивач датотеке као аргумент. Датотека повезана са показивачем датотеке се затим затвара уз помоћ функције фцлосе. Враћа 0 ако је затварање било успешно и ЕОФ (крај датотеке) ако је дошло до грешке приликом затварања датотеке.

Након затварања датотеке, исти показивач датотеке може се користити и са другим датотекама.

У програмирању 'Ц', датотеке се аутоматски затварају када се програм прекине. Ручно затварање датотеке писањем функције фцлосе добра је пракса програмирања.

Писање у датотеку

У Ц, када пишете у датотеку, знакови новог реда '\ н' морају бити изричито додати.

Библиотека стдио нуди потребне функције за писање у датотеку:

  • фпутц (цхар, филе_поинтер) : Записује знак у датотеку на коју указује филе_поинтер.
  • фпутс (стр, филе_поинтер) : Записује низ у датотеку на коју указује филе_поинтер.
  • фпринтф (филе_поинтер, стр, вариабле_листс) : Штампа низ у датотеку на коју указује филе_поинтер. Низ по жељи може садржати спецификаторе формата и листу променљивих вариа_листс.

Програм у наставку показује како се врши писање у датотеку:

фпутц () функција:

#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;}

Излаз:

Горњи програм уписује један знак у датотеку фпутц_тест.ткт док не стигне до симбола следећег реда „\ н“ што значи да је реченица успешно написана. Процес је узимање сваког карактера низа и његово записивање у датотеку.

  1. У горе наведеном програму створили смо и отворили датотеку која се зове фпутц_тест.ткт у режиму писања и прогласили наш низ који ће бити записан у датотеку.
  2. Радимо операцију писања карактера помоћу петље фор и стављамо сваки знак у нашу датотеку док се не нађе знак "\ н", а затим се датотека затвара помоћу функције фцлосе.

фпутс () функција:

#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. У горе наведеном програму створили смо и отворили датотеку која се зове фпутс_тест.ткт у режиму писања.
  2. Након што извршимо операцију писања користећи функцију фпутс () тако што напишемо три различита низа
  3. Тада се датотека затвара помоћу функције фцлосе.

фпринтф () Функција:

#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. У горе наведеном програму створили смо и отворили датотеку која се зове фпринтф_тест.ткт у режиму писања.
  2. Након што се операција писања изведе помоћу функције фпринтф () писањем низа, датотека се затвара помоћу функције фцлосе.

Читање података из датотеке

Постоје три различите функције посвећене читању података из датотеке

  • фгетц (филе_поинтер): Враћа следећи знак из датотеке на коју показује показивач датотеке. Када се достигне крај датотеке, ЕОФ се враћа назад.
  • фгетс (буффер, н, филе_поинтер): Чита н-1 знакова из датотеке и чува низ у међуспремнику у који је НУЛЛ знак '\ 0' додан као последњи знак.
  • фсцанф (показивач_датотеке, спецификација_претворбе, променљиве_адресе) : Користи се за рашчлањивање и анализу података. Чита знакове из датотеке и додељује улаз листи променљивих показивача променљиве_адресе помоћу спецификатора конверзије. Имајте на уму да као и код сцанф, фсцанф зауставља читање низа када се наиђе на размак или нови ред.

Следећи програм приказује читање из датотеке фпутс_тест.ткт помоћу функција фгетс (), фсцанф () и фгетц ():

#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. У горњем програму отворили смо датотеку под називом „фпринтф_тест.ткт“ која је претходно написана помоћу функције фпринтф () и садржи низ „Учење Ц са Гуру99“. Читамо га помоћу функције фгетс () која чита ред по ред где величина ме успремника мора бити довољна да обрађује целу линију.
  2. Поново отварамо датотеку да бисмо поништили датотеку показивача на тачку на почетку датотеке. Створите разне променљиве низа за обраду сваке речи одвојено. Одштампајте променљиве да бисте видели њихов садржај. Фсцанф () се углавном користи за издвајање и рашчлањивање података из датотеке.
  3. Поново отворите датотеку да бисте датотеку показивача вратили на почетну вредност датотеке. Читајте податке и исписујте их из знака у датотеку користећи функцију гетц () док се не наиђе на ЕОФ израз
  4. Након извођења датотеке са операцијама читања користећи различите варијанте, поново смо затворили датотеку помоћу функције фцлосе.

Интерактивно читање и писање датотека помоћу гетц и путц

Ово су најједноставније операције датотека. Гетц означава гет цхарацтер, а путц значи пут цхарацтер. Ове две функције се истовремено користе за обраду само једног знака.

Следећи програм приказује функције руковања датотекама у програмирању 'Ц':

#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. Након што се изврши операција писања, датотека се затвара помоћу функције фцлосе.
  3. Поново смо отворили датотеку која сада садржи податке у режиму читања. Извршиће се петља вхиле док се не пронађе еоф. Једном када се пронађе крај датотеке, операција ће се прекинути и подаци ће се приказати помоћу функције принтф.
  4. Након извођења операције читања датотека се поново затвара помоћу функције фцлосе.

Резиме

  • Датотека је простор у меморији у коме се чувају подаци.
  • Програмирање 'Ц' пружа разне функције за рад са датотеком.
  • Механизам манипулације датотекама назива се управљање датотекама.
  • Датотека се мора отворити пре извођења операција на њој.
  • Датотека се може отворити у режиму читања, писања или додавања.
  • Гетц и путц функције користе се за читање и писање једног знака.
  • Функција фсцанф () дозвољава читање и рашчлањивање података из датотеке
  • Можемо читати (користећи функцију гетц ) целу датотеку петљом да покријемо целу датотеку док се не наиђе на ЕОФ
  • У датотеку можемо писати након што јој креирамо име, помоћу функције фпринтф () и она мора имати знак новог реда на крају текста низа.