Kaip skaityti tekstinį failą ir spausdinti visas eilutes C

Kaip Skaityti Tekstini Faila Ir Spausdinti Visas Eilutes C



Skaityti tekstinį failą ir spausdinti viską stygos yra pagrindinė užduotis, kurią dažnai atlieka C programuotojai. Svarbu suprasti pagrindus skaitymas a tekstinis failas C ir kaip spausdinti į stygos prieš bandydami atlikti šią užduotį.

Šiame straipsnyje bus parodytas tekstinio failo skaitymas ir visų jame esančių eilučių spausdinimas naudojant C programavimą.







Perskaitykite tekstinį failą ir atspausdinkite visas eilutes C

Yra keturios funkcijos, leidžiančios skaityti tekstinį failą ir spausdinti visas eilutes C, kurios yra tokios:



1 būdas: fread() funkcija

Duomenys yra skaityti iš failo ir saugomi buferyje naudojant C funkciją baisus () . Norint suskaičiuoti elementus masyvo buferyje, baisus () metodas nuskaito iš įvesties srauto, pateikto kaip funkcijos parametras. Nuskaitant kiekvieną simbolio funkciją, nurodyto įvesties srauto failo padėties indikatorius juda į priekį.



The baisus () metodas C turi sintaksę.





dydis_t fread ( tuštuma * masyvo_buferis, dydis_t dydis , dydis_t skaičius, FILE * failo_srautas )

Pažvelkime į fread() funkcijos parametrus išsamiau:



masyvo buferis: Duomenys laikinai laikomi kompiuterio buferyje, atminties erdvėje. Šis argumentas yra rodyklė, nurodanti vietą buferio atmintyje, kurioje bus duomenys skaityti iš įvesties srauto.

dydis: Šis argumentas nurodo funkciją, kiek baitų duomenų bus nuskaityta iš kiekvieno bloko įvesties srauto.

skaičiuoti: Nurodoma, kiek simbolių bus nuskaityta iš duomenų įvesties srauto.

file_stream: Tai rodyklė, nurodanti į FILE objektą.

#include
#include
tarp pagrindinis ( ) {
FAILAS * failą ;
char buferis [ 100 ] ;
failą = fopen ( 'C_File.txt' , 'r' ) ;
jeigu ( failą == NULL ) {
printf ( 'Klaida: nepavyko atidaryti failo \n ) ;
grąžinti 1 ;
}
tarpt skaičiuoti = išgąsdinti ( & buferis, dydisof ( char ) , 100 , failą ) ;
fclose ( failą ) ;
printf ( 'Iš failo nuskaityti duomenys yra: %s \n , buferis ) ;
printf ( 'Perskaitytų elementų skaičius: %d' , suskaičiuoti ) ;
fclose ( failą ) ;
grąžinti 0 ;
}

Šiame pavyzdyje apibrėžiame simbolių masyvo dydžio buferį 100 prieš naudojant fopen () norėdami atidaryti tekstinį failą C_Failas.txt skaitymo režimu. Naudodami if teiginį nustatome, ar failas buvo sėkmingai atidarytas. Kitas žingsnis yra perskaityti iki 100 baitų duomenų iš failo naudojant baisus () . Tikslinis buferis, šiuo atveju buferio masyvas, yra pirmasis parametras fread (). Antrasis argumentas, dydis , nustato kiekvieno elemento, kurį reikia skaityti, dydį, kai skaitome simboliais . Trečioji įvestis yra skaitomas kiekis, kuris šiuo atveju yra 100 . The failo žymeklis yra ketvirtasis parametras. Galiausiai naudojame printf() spausdinti iš failo nuskaitytus duomenis ir fclose () norėdami uždaryti failą. Vykdant šią programą būtų gauti tokie rezultatai, jei C_Failas.txt :

Išvestis

2 būdas: fgets() funkcija

C kalba fgets () metodas nuskaito n simbolių iš srauto į eilutę str. The fgets () metodas toliau skaito simbolius iš srauto iki (n-1) buvo perskaityti simboliai, aptiktas naujos eilutės simbolis arba pasiekta failo pabaiga (EOF).

#include
tarp pagrindinis ( ) {
FAILAS * failą ;
char buferis [ 100 ] ;
failą = fopen ( 'C_File.txt' , 'r' ) ;
jeigu ( failą == NULL ) {
printf ( 'Klaida: nepavyko atidaryti failo \n ) ;
grąžinti 1 ;
}
kol ( fgets ( buferis, 100 , failą ) ) {
printf ( 'Eilutė nuskaityta iš failo: %s' , buferis ) ;
}
fclose ( failą ) ;
grąžinti 0 ;
}

Šis pavyzdys naudoja fopen () norėdami atidaryti tekstinį failą, vadinamą C_Failas.txt skaitymo režimu, pirmą kartą paskelbus simbolių masyvo buferio dydį 100 . Naudodami if teiginį nustatome, ar failas buvo sėkmingai atidarytas. Po to mes įdarbiname o kilpą ir fgets () perskaityti teksto eilutes iš failo naudojant failo žymeklį. Naudojant printf() cikle spausdiname kiekvieną teksto eilutę. Vykdant šią programą būtų gauta išvestis:

Išvestis

3 būdas: fscanf() funkcija

Standartinis bibliotekos metodas vadinamas fscanf() priima daugybę parametrų ir paverčia juos reikšmėmis, kurias gali naudoti jūsų programa. Nors skaitymas iš failo , ji grąžins formato eilutę vietoje visko, ką tikisi matyti viduje. Kad jūsų programinė įranga neinterpretuotų formato eilutės kaip savo sintaksės dalies, ji turi būti kabutėse ('').

#include
tarp pagrindinis ( ) {
FAILAS * failą ;
int num1, num2, num3;
failą = fopen ( 'C_File.txt' , 'r' ) ;
jeigu ( failą == NULL ) {
printf ( 'Klaida: nepavyko atidaryti failo \n ) ;
grąžinti 1 ;
}
fscanf ( failą , „%d %d %d“ , & numeris 1, & skaičius2, & numeris3 ) ;
printf ( 'Iš failo nuskaityti skaičiai yra: %d, %d, %d \n , skaičius1, skaičius2, skaičius3 ) ;
fclose ( failą ) ;
grąžinti 0 ;
}

Šis pavyzdys atidaro failą C_Failas.txt skaitymo režimu, pirmiausia deklaruodami 3 int kintamuosius, num1, num2 ir num3. Naudodami if teiginį nustatome, ar failas buvo sėkmingai atidarytas. Kitas veiksmas yra nuskaityti tris skaičius iš failo naudojant fscanf() ir %d formato specifikatorius. Vertės laikomos kintamuosiuose num1, num2 ir num3. Galiausiai naudojame printf() išvesti šių kintamųjų reikšmes ir fclose () norėdami uždaryti failą. Paleidus šią programą būtų gauti toliau nurodyti rezultatai:

Išvestis

4 būdas: fgetc() funkcija

Failas gali būti skaityti simbolis po simbolio naudojant fgetc() funkcija. Ši funkcija grąžina ASCII kodą simboliui, kurį skaito ši funkcija. Grąžinamas simbolis iš nurodytos failo žymeklio vietos. Šis simbolis nuskaitomas, kai tik simbolis yra perskaitytas pagal failo žymeklį. Šis metodas grąžina EOF failą, jei žymeklis yra failo pabaigoje arba jei yra problema.

#include
tarp pagrindinis ( ) {
FAILAS * failą ;
char c;
failą = fopen ( 'C_File.txt' , 'r' ) ;
jeigu ( failą == NULL ) {
printf ( 'Klaida: nepavyko atidaryti failo \n ) ;
grąžinti 1 ;
}
kol ( ( c = fgetc ( failą ) ) ! = EOF ) {
printf ( '%c' , c ) ;
}
fclose ( failą ) ;
grąžinti 0 ;
}

Šiuo atveju mes naudojame fopen () komandą, kad atidarytumėte tekstinį failą C_Failas.txt skaitymo režimu. Naudodami if teiginį nustatome, ar failas buvo sėkmingai atidarytas. Po to mes įdarbiname o kilpą ir fgetc() norėdami nuskaityti simbolius iš failo. Iš failo gautas simbolis priskiriamas kintamajam c kilpos viduje prieš spausdinant printf (). Kilpa veikia tol, kol EOF (Failo pabaigos) konstanta aptinka failo pabaigą. Vykdant šią programą būtų gauti tokie rezultatai, jei C_Failas.txt yra žodis 'Linuxint'.

Išvestis

Išvada

Naudojant aukščiau aprašytus veiksmus, C gali būti naudojamas skaityti tekstinį failą ir spausdinti visas eilutes jame yra. Jis prasideda naudojant fopen () sistemos iškvietimas, kad atidarytumėte failą, o po to - naudojimas fscanf(), fread(), fgets(), fgetc() duomenims perskaityti. Po to failas uždaromas naudojant fclose () o eilutėms spausdinti naudojama for kilpa. Naudojant šiuos metodus, C gali būti naudojamas norint efektyviai skaityti ir spausdinti duomenis.