• Giga@hdv-tech.com
  • 24H netþjónusta:
    • 7189078c
    • sns03
    • 6660e33e
    • youtube 拷贝
    • instagram

    C, Skjalalestur og ritun

    Pósttími: 11. ágúst 2023

    Lýsir hvernig C forritarinn býr til, opnar og lokar textaskrá eða tvíundarskrá.

    Skrá, þýðir röð bæta, hvort sem það er textaskrá eða tvíundarskrá, C Language, veitir ekki aðeins aðgang að efstu aðgerðum, heldur veitir einnig undirliggjandi (OS) kall til að vinna úr skrám á geymslutækinu .Þessi kafli mun útskýra mikilvæg símtöl í skjalastjórnun.

    opna skrá

    Venjulega með því að nota fopen () aðgerðina til að búa til nýja skrá eða opna núverandi skrá, þetta símtal frumstillir hlut af gerðinni FILE sem inniheldur allar nauðsynlegar upplýsingar til að stjórna flæðinu.Hér er frumgerð þessa aðgerðarkalls:

    FILE *fopen ( const char * filename , const char * mode );

    Hér er skráarnafn strengur til að nefna skrá, gildi aðgangshamsins getur verið eitt af eftirfarandi gildum:

    mynstur

    lýsingu

    r

    Opnaðu fyrirliggjandi textaskrá sem gerir kleift að lesa hana.

    w

    Opnaðu textaskrá sem gerir kleift að skrifa í skrána.Ef skráin er ekki til er ný skrá búin til.Hér skrifar forritið þitt innihald frá upphafi skráarinnar.Ef skráin er til verður hún stytt í núll lengd og endurskrifuð.

    a

    Opnaðu textaskrá og skrifaðu í skrána í viðaukaham.Ef skráin er ekki til er ný skrá búin til.Hér bætir forritið þitt efni við skrárnar sem þú ert nú þegar með.

    r+

    Opnaðu textaskrá sem gerir þér kleift að lesa og skrifa skrána.

    w+

    Opnaðu textaskrá sem gerir þér kleift að lesa og skrifa skrána.Ef skráin er þegar til er skráin stytt í núll lengd og ef hún er ekki til er ný skrá búin til.

    a+

    Opnaðu textaskrá sem gerir þér kleift að lesa og skrifa skrána.Ef skráin er ekki til er ný skrá búin til.Lesið byrjar í upphafi skráarinnar og ritunin er aðeins í append ham.

    Ef unnið er úr tvíundarskrá skaltu nota eftirfarandi aðgangsham til að skipta um ofangreint:

    "rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"

    lokað skrá

    Til að loka skránni skaltu nota fclose() aðgerðina.Frumgerð aðgerðarinnar er sem hér segir:

    int fclose ( FILE *fp );

    • Ef skránni er lokað skilar fclose() fallinu núlli og ef villan skilar EOF.Þessi aðgerð fjarlægir í raun gögnin úr biðminni, lokar skránni og losar allt minni sem notað er fyrir þá skrá.EOF er fasti skilgreindur í hausskránni stdio.h

    C staðalsafnið býður upp á ýmsar aðgerðir til að lesa og skrifa skrár eftir stöfum eða sem streng með fastri lengd.

    Skrifaðu í skrána

    Hér eru einföldustu aðgerðir til að skrifa stafi í strauminn:

    int fputc ( int c , FILE *fp );

    Fallið fputc () skrifar stafagildi færibreytunnar c inn í úttaksstrauminn sem fp bendir á.Ef skrifin heppnast, skilar það ritaða stafnum og EOF ef villa kemur upp.Þú getur notað eftirfarandi aðgerð til að skrifa streng sem endar á núll í strauminn:

    int fputs (const char *s, FILE *fp);

    Fallið fputs () skrifar strenginn s í úttaksstrauminn þar sem fp bendir á.Ef skrifin heppnast, skilar það óneikvæðu gildi og EOF ef villa kemur upp.Þú getur líka notað aðgerðina int fprintf (FILE * fp, const char * format,...) skrifar streng í skrána.Prófaðu eftirfarandi dæmi:

    Athugið: Gakktu úr skugga um að þú hafir tiltæka tmp möppu og ef hún er ekki til þarftu fyrst að búa hana til á tölvunni þinni.

    / tmp er venjulega tímabundin skrá á Linux kerfinu.Ef þú keyrir á Windows kerfinu þarftu að breyta því í möppu sem er til í staðbundnu umhverfi, svo sem: C: \ tmp, D: \ tmp, osfrv.

    lifandi dæmi

    #innihaldaint main () { FILE *fp = NULL;fp = fopen ("/tmp/test.txt ", "w+");fprintf (fp , "Þetta er að prófa fyrir fprintf...\n ");fputs ("Þetta er að prófa fyrir fputs...\n ", fp );floka (fp );}

    Þegar ofangreindur kóði er settur saman og keyrður, býr hann til nýja skrá test.txt í / tmp möppunni.Og skrifar á tvær línur með því að nota tvær mismunandi aðgerðir.Við skulum lesa þessa skrá næst.

    Lestu skrána

    Eftirfarandi er einfaldasta aðgerðin til að lesa einn staf úr skrá:

    int fgetc ( FILE * fp );

    Aðgerðin fgetc () les staf úr inntaksskránni sem fp bendir á.Skilagildið er lesstafurinn og EOF ef villa kemur upp.Eftirfarandi aðgerð gerir þér kleift að lesa streng úr straumi:

    char *fgets ( char *buf , int n , FILE *fp );

    Fallið fgets () les n-1 stafi úr inntaksstraumnum sem stýrt er af fp.Það afritar lesstrenginn í biðminni og bætir við núllstaf í lokin til að slíta strengnum.

    Ef þessi aðgerð rekst á brotinn línustaf „\ n“ eða EOF í lok skráar áður en síðasta stafurinn er lesinn, þá er aðeins farið aftur í lesnu stafina, þar með talið línuskil.Þú getur líka notað int fscanf (FILE * fp, const char * format,...) aðgerðina til að lesa strenginn úr skránni, en hann hættir að lesa þegar hann rekst á fyrsta bil og línuskil.

    lifandi dæmi

    #innihaldaint main () { FILE *fp = NULL;bleikjubuff [255];fp = fopen ("/tmp/test.txt ", "r ");fscanf (fp, "%s", buff);printf ("1: %s \n ", buff );fgets (buff , 255, (FILE *)fp );printf ("2: %s \n ", buff );fgets (buff , 255, (FILE *)fp );printf ("3: %s \n ", buff );floka (fp );}

    Þegar ofangreindur kóði er settur saman og keyrður, les hann skrárnar sem búnar voru til í fyrri hlutanum og gefur eftirfarandi niðurstöður:

    1: Þessi 2: er að prófa fyrir fprintf...

    3: Þetta er að prófa fyrir fputs...

    Í fyrsta lagi les aðferðin við fscanf() aðeins This .vegna þess að hún rekst á bil að aftan.Í öðru lagi, hringdu í functon fgets () til að lesa þann hluta sem eftir er til enda línunnar.Að lokum skaltu hringja í fgets () til að lesa aðra röðina alveg.

    Tvöfaldur I/O virka

    Eftirfarandi tvær aðgerðir eru notaðar fyrir tvöfalda inntak og úttak:

    size_t fread (ógilt *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file );size_t fwrite (const ógilt *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file);

    Báðar aðgerðir eru lesnar og skrifaðar fyrir geymslublokkir - venjulega fylki eða mannvirki.

    Hér að ofan um C skrá lestur og ritun tilheyrir HDV Phoelectron Technology Ltd., tæknilega hugbúnaðaraðgerð.Og fyrirtækið fyrir nettengdan búnað (eins og: ACONU/ samskiptiONU/ greindurONU/ trefjarONU, o.s.frv.) hefur komið saman öflugu hugbúnaðarteymi, fyrir hvern viðskiptavin aðlaga þær einkakröfur sem þurfa á því að halda, einnig láta vörur okkar snjallari og háþróaðri.



    web聊天