Kako prebrati besedilno datoteko in natisniti vse nize v C

Kako Prebrati Besedilno Datoteko In Natisniti Vse Nize V C



Branje besedilne datoteke in tiskanje vsega strune je ključna naloga, ki jo pogosto opravljajo programerji C. Pomembno je razumeti osnove branje a besedilna datoteka v C in kako tiskanje the strune iz njega, preden poskusite to nalogo.

Branje besedilne datoteke in tiskanje vseh nizov, ki jih vsebuje, bo v tem članku prikazano s programiranjem C.







Preberi besedilno datoteko in natisni vse nize v C

Obstajajo štiri funkcije za branje besedilne datoteke in tiskanje vseh nizov v C, ki so naslednje:



1. način: funkcija fread().

Podatki so prebrati iz datoteke in shrani v medpomnilnik s funkcijo C fread() . Za štetje elementov v medpomnilniku matrike je fread() metoda bere iz vhodnega toka, ki je na voljo kot parameter funkcije. Ko vsako funkcijo bere znak, se indikator položaja datoteke za podani vhodni tok premakne naprej.



The fread() metoda v C ima sintakso.





size_t fread ( praznina * medpomnilnik_matrike, velikost_t velikost , velikost_t štetje, DATOTEKA * datotečni_tok )

Oglejmo si podrobneje parametre funkcije fread():



matrični medpomnilnik: Podatki so začasno shranjeni v medpomnilniku računalnika, pomnilniškem prostoru. Ta argument je kazalec, ki se nanaša na mesto v pomnilniku medpomnilnika, ki bo vseboval podatke prebrati iz vhodnega toka.

velikost: Ta argument daje navodilo funkciji, koliko bajtov podatkov bo prebranih iz vhodnega toka za vsak blok.

štetje: Določa, koliko znakov bo prebranih iz vhodnega toka podatkov.

file_stream: Je kazalec, ki se nanaša na objekt FILE.

#include
#include
int main ( ) {
MAPA * mapa ;
medpomnilnik char [ 100 ] ;
mapa = fopen ( 'C_File.txt' , 'r' ) ;
če ( mapa == NULL ) {
printf ( »Napaka: datoteke ni bilo mogoče odpreti \n ' ) ;
vrnitev 1 ;
}
int štetje =fread ( & medpomnilnik, sizeof ( char ) , 100 , mapa ) ;
fclose ( mapa ) ;
printf ( »Podatki, prebrani iz datoteke, so: %s \n ' , medpomnilnik ) ;
printf ( 'Število prebranih elementov: %d' , štetje ) ;
fclose ( mapa ) ;
vrnitev 0 ;
}

V tem primeru definiramo vmesni pomnilnik niza znakov velikosti 100 pred uporabo fopen() da odprete besedilno datoteko C_File.txt v načinu branja. S stavkom if ugotovimo, ali je bila datoteka uspešno odprta. Naslednji korak je branje do 100 bajtov podatkov iz datoteke z uporabo fread() . Ciljni vmesni pomnilnik, v tem primeru matrika vmesnega pomnilnika, je prvi parameter fread(). Drugi argument, sizeof , določa velikost vsakega elementa, ki ga je treba brati, ko beremo v znakih . Tretji vnos je količina za branje, ki je v tem primeru 100 . The kazalec datoteke je četrti parameter. Nazadnje uporabljamo printf() za tiskanje prebranih podatkov iz datoteke in fclose() da zaprete datoteko. Zagon tega programa bi povzročil takšne rezultate, če C_File.txt :

Izhod

2. način: funkcija fgets().

Jezik C fgets() metoda prebere n znakov iz toka v niz str. The fgets() metoda nadaljuje z branjem znakov iz toka, dokler (n-1) je bilo prebranih znakov, je bil zaznan znak za novo vrstico ali pa je bil dosežen konec datoteke (EOF).

#include
int main ( ) {
MAPA * mapa ;
medpomnilnik char [ 100 ] ;
mapa = fopen ( 'C_File.txt' , 'r' ) ;
če ( mapa == NULL ) {
printf ( »Napaka: datoteke ni bilo mogoče odpreti \n ' ) ;
vrnitev 1 ;
}
medtem ( fgets ( medpomnilnik, 100 , mapa ) ) {
printf ( 'Niz prebran iz datoteke: %s' , medpomnilnik ) ;
}
fclose ( mapa ) ;
vrnitev 0 ;
}

Ta primer uporablja fopen() da odprete besedilno datoteko, imenovano C_File.txt v načinu branja po prvi deklaraciji vmesnega pomnilnika niza znakov velikosti 100 . S stavkom if ugotovimo, ali je bila datoteka uspešno odprta. Po tem uporabimo zanko while in fgets() za branje vrstic besedila iz datoteke z uporabo kazalca datoteke. Uporaba printf() znotraj zanke natisnemo vsako vrstico besedila. Zagon tega programa bi zagotovil rezultat:

Izhod

3. način: funkcija fscanf().

Standardna metoda knjižnice, imenovana fscanf() sprejme niz parametrov in jih pretvori v vrednosti, ki jih lahko uporabi vaša aplikacija. Medtem branje iz datoteke , bo vrnil formatni niz namesto vsega, kar pričakuje, da bo v njem. Če želite preprečiti, da bi vaša programska oprema interpretirala formatni niz kot del lastne sintakse, mora biti obdan z narekovaji ('').

#include
int main ( ) {
MAPA * mapa ;
int num1, num2, num3;
mapa = fopen ( 'C_File.txt' , 'r' ) ;
če ( mapa == NULL ) {
printf ( »Napaka: datoteke ni bilo mogoče odpreti \n ' ) ;
vrnitev 1 ;
}
fscanf ( mapa , '%d %d %d' , & številka 1, & num2, & številka3 ) ;
printf ( 'Številke, prebrane iz datoteke, so: %d, %d, %d \n ' , št.1, št.2, št.3 ) ;
fclose ( mapa ) ;
vrnitev 0 ;
}

Ta primer odpre datoteko C_File.txt v načinu branja tako, da najprej deklarirate 3 int spremenljivke, num1, num2 in num3. S stavkom if ugotovimo, ali je bila datoteka uspešno odprta. Naslednji korak je branje treh številk iz datoteke z uporabo fscanf() in %d specifikator formata. Vrednosti se hranijo v spremenljivkah num1, num2 in num3. Nazadnje uporabljamo printf() za izpis vrednosti teh spremenljivk in fclose() da zaprete datoteko. Zagon tega programa bi imel za posledico naslednje rezultate:

Izhod

4. način: funkcija fgetc().

Datoteka je lahko prebrati znak za znakom z uporabo fgetc() funkcijo. Ta funkcija vrne kodo ASCII za znak, ki ga ta funkcija prebere. Vrne se znak iz podane lokacije kazalca datoteke. Naslednji znak se prebere, ko je znak prebran, glede na kazalec datoteke. Ta metoda vrne datoteko EOF, če je kazalec na koncu datoteke ali če obstaja težava.

#include
int main ( ) {
MAPA * mapa ;
znak c;
mapa = fopen ( 'C_File.txt' , 'r' ) ;
če ( mapa == NULL ) {
printf ( »Napaka: datoteke ni bilo mogoče odpreti \n ' ) ;
vrnitev 1 ;
}
medtem ( ( c = fgetc ( mapa ) ) ! = EOF ) {
printf ( '%c' , c ) ;
}
fclose ( mapa ) ;
vrnitev 0 ;
}

V tem primeru uporabljamo fopen() ukaz za odpiranje besedilne datoteke C_File.txt v načinu branja. S stavkom if ugotovimo, ali je bila datoteka uspešno odprta. Po tem uporabimo zanko while in fgetc() za branje znakov iz datoteke. Znak, prejet iz datoteke, je dodeljen spremenljivki c znotraj zanke, preden se natisne z uporabo printf (). Zanka teče, dokler EOF (Konec datoteke) konstanta zazna konec datoteke. Zagon tega programa bi prinesel naslednje rezultate, če C_File.txt vsebuje besedo 'Linuxint'.

Izhod

Zaključek

Z uporabo zgoraj opisanih korakov lahko C uporabite za prebrati besedilno datoteko in natisni vse nize vsebuje. Začne se z uporabo fopen() sistemski klic za odpiranje datoteke, ki mu sledi uporaba od fscanf(), fread(), fgets(), fgetc() za branje podatkov. Nato se datoteka zapre z uporabo fclose() in zanka for se uporablja za tiskanje nizov. Z uporabo teh tehnik lahko C uporabimo za učinkovito branje in tiskanje podatkov.