I den här guiden lär vi oss hur man utför input / output (I / O) -åtgärder på en fil med C-programmeringsspråk.
C File I / O – Innehållsförteckning
1. Öppna en fil
2. Läsa en fil
3. Skriva en fil
4. Stänga en fil
5. Läsa och skriva strängar till en fil
6. Läsa och skriva binära filer i C
Innan vi diskuterar varje operation i detalj, kan vi ta ett enkelt C-program:
Ett enkelt C-program för att öppna, läsa och stänga filen
I ovanstående program öppnar vi en fil newfile.txt
i r
-läge, läser innehållet i filen och visar det på konsolen. kan vi förstå varje operation i detalj:
Öppna en fil
fopen()
-funktionen används för att öppna en fil.
Syntax:
FILE pointer_name = fopen ("file_name", "Mode");
pointer_name
kan vara något av din val.
file_name
är namnet på filen som du vill öppna. Ange hela sökvägen här som ”C: \\ myfiles \\ newfile.txt”.
När du öppnar en fil måste du ange läget. Läget som vi använder för att läsa en fil är ”r ”Vilket är” skrivskyddat läge ”.
till exempel:
FILE *fp;fp = fopen("C:\\myfiles\\newfile.txt", "r");
Adressen till det första tecknet lagras i pointer fp
.
Hur kontrollerar jag om filen har öppnats framgångsrikt?
Om filen inte öppnas framgångsrikt kommer pekaren att tilldelas ett NULL-värde så att du kan skriva logiken så här :
Den här koden kommer att kontrollera om filen har öppnats framgångsrikt eller inte. Om filen inte öppnas kommer detta att visa ett felmeddelande till användaren.
..FILE fpr;fpr = fopen("C:\\myfiles\\newfile.txt", "r");if (fpr == NULL){ puts("Error while opening file"); exit();}
Olika filöppningslägen:
Filen öppnas med fopen()
-funktionen, medan du öppnar kan du använda något av följande lägen enligt kraven.
Mode ”r”: Det är ett skrivskyddat läge, vilket innebär att om filen öppnas i r-läge, kan du inte skriva och ändra innehållet i den. När fopen()
öppnar en fil framgångsrikt returnerar den adressen till filens första tecken, annars returnerar den NULL.
Läge ”w”: Det är en skrivning Endast läge. Funktionen fopen()
skapar en ny fil när den angivna filen inte finns och om den inte öppnar filen returnerar den NULL.
Mode ” a ”: Med detta läge kan innehåll läggas till i slutet av en befintlig fil. Liksom läge ”w” skapar fopen()
en ny fil om den inte finns. När den inte lyckas öppnar den NULL.
File Pointer pekar på: filens sista tecken .
Läge ”r +”: Det här läget är detsamma som läget ”r”, men du kan utföra olika åtgärder på filen som öppnas i detta läge. Du får läsa, skriva och ändra innehållet i filen öppnas i ”r +” -läge.
Filpekaren pekar på: Filens första tecken.
Läge ”w +”: Samma som läge ”w” bortsett från operationer som kan utföras; filen kan läsas, skrivas och modifieras i detta läge.
Mode ”a +”: Samma som mode ”a”; du kan läsa och lägga till data i filen, men ändring av innehåll är inte tillåtet i detta läge.
Läsa en fil
För att läsa filen måste vi öppna den först med valfri av läget, till exempel om du bara vill läsa filen och sedan öppna den i ”r” -läge. Baserat på det läge som valts under filöppningen, har vi rätt att utföra vissa operationer på filen.
C Program för att läsa en fil
fgetc (): Den här funktionen läser tecknet från den aktuella pekarens position och vid en lyckad läsning flyttar pekaren till nästa tecken i filen. När pekarna når till slutet av filen , den här funktionen returnerar EOF (slutet på filen). Vi har använt EOF i vårt program för att bestämma slutet på filen.
Skriva till en fil
För att skriva filen, vi måste öppna filen i ett läge som stöder skrivning. Om du till exempel öppnar en fil i ”r” -läge kommer du inte att kunna skriva filen eftersom ”r” är skrivskyddat läge som bara tillåter läsning.
Exempel: C Program för att skriva filen
Detta program ber användaren att ange ett tecken och skriver det tecknet i slutet av filen. Om filen inte finns kommer detta program att skapa en fil med det angivna namnet och skriva inmatningstecknet i filen.
Stänga en fil
fclose(fp);
Funktionen fclose () används för att stänga en öppnad fil. Som ett argument måste du ange en pekare till filen som du vill stänga.
Ett exempel för att visa Öppna, läs, skriv och stäng operation i C
Hur man läser / skriver (I / O) Strängar i filer – fgets & fputs
Här kommer vi att diskutera hur man läser och skriver strängar i en fil.
char *fgets(char *s, int rec_len, FILE *fpr)
s: Matris med tecken för att lagra strängar.
rec_len: Ingångspostens längd.
fpr: Pekare till inmatningsfilen.
Låt oss ta ett exempel:
Exempel på att läsa strängarna från en fil i C-programmering
I exemplet ovan har vi använt fgets-funktionen så här:
fgets(str, 10, fpr)
Här representerar strängen strängen (array med char) där du lagrar strängen efter att ha läst den från filen.
10 är längden på strängen som måste läsas varje gång.
fpr är pekare till fil, vilket kommer att läsas.
Varför använde jag if (fgets (str, 10, fpr) == NULL som en logik för att bestämma slutet av filen?
I exemplen ovan har vi använt ch == EOF för att lära känna slutet på filen. Här har vi använt den här logiken eftersom fgets returnerar NULL när det inte finns fler poster tillgängliga att läsa .
C-program – Skrivsträng till en fil
int fputs ( const char * s, FILE * fpw );
char *s
char.
FILE *fpw
– Pekare (av FILE-typ) till filen, som kommer att skrivas.
fputs tar två argument –
fputs(str, fpw)
str – str representerar matrisen där strängen lagras.
fpw – FIL-pekare till utdatafilen, där posten måste skrivas.
Peka på om fputs:
fputs lägger till som standard inte till en ny rad efter att varje post har skrivits, för att göra det manuellt – du kan ha följande uttalande efter varje skrivning till filen.
fputs("\n", fpw);
C FIL I / O för binära filer
Hittills har vi lärt oss filåtgärder på textfiler, vad händer om filerna är binära (t.ex. .exe-fil). Ovanstående program fungerar inte för binära filer, men det är en mindre förändring i hanteringen av binära filer. Huvudskillnaden är filnamnslägena &. Låt oss förstå detta med hjälp av ett exempel. Låt oss säga att jag har två binära filer bin1.exe & bin2.exe – Jag vill kopiera innehållet i bin1.exe till bin2.exe:
Exempel: Läsning och skriva binära filer i C
Obs! Filöppningslägen är ”rb” och ”wb” istället för ”r” & ”w” ..