• Giga@hdv-tech.com
  • 24H Huduma ya Mtandaoni:
    • 7189078c
    • sns03
    • 6660e33e
    • youtube 拷贝
    • instagram

    C, Kusoma na Kuandika Hati

    Muda wa kutuma: Aug-11-2023

    Inafafanua jinsi kitengeneza programu C huunda, kufungua, na kufunga faili ya maandishi, au faili ya jozi.

    Faili, ina maana ya mfululizo wa baiti, iwe ni faili ya maandishi au faili ya jozi, Lugha ya C, haitoi tu ufikiaji wa vitendaji vya kiwango cha juu, lakini pia hutoa simu ya msingi (OS) ya kuchakata faili kwenye kifaa cha kuhifadhi. . Sura hii itaelezea wito muhimu katika usimamizi wa hati.

    fungua faili

    Kawaida kwa kutumia fopen () kukokotoa kuunda faili mpya au kufungua faili iliyopo, simu hii huanzisha kitu cha aina FILE ambacho kina taarifa zote muhimu ili kudhibiti mtiririko. Hapa kuna mfano wa simu hii ya kukokotoa:

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

    Hapa jina la faili ni kamba ya kutaja faili, thamani ya hali ya ufikiaji inaweza kuwa moja ya maadili yafuatayo:

    muundo

    maelezo

    r

    Fungua faili ya maandishi iliyopo ambayo inaruhusu kusomwa.

    w

    Fungua faili ya maandishi ambayo inaruhusu kuandika kwa faili. Ikiwa faili haipo, faili mpya imeundwa. Hapa, programu yako inaandika yaliyomo tangu mwanzo wa faili. Ikiwa faili iko, itapunguzwa hadi urefu wa sifuri na kuandikwa upya.

    a

    Fungua faili ya maandishi na uandike kwa faili katika hali ya kuongeza. Ikiwa faili haipo, faili mpya imeundwa. Hapa, programu yako huongeza maudhui kwenye faili ambazo tayari unazo.

    r+

    Fungua faili ya maandishi ambayo hukuruhusu kusoma na kuandika faili.

    w+

    Fungua faili ya maandishi ambayo inakuwezesha kusoma na kuandika faili. Ikiwa faili tayari iko, faili imepunguzwa hadi urefu wa sifuri, na ikiwa faili haipo, faili mpya imeundwa.

    a+

    Fungua faili ya maandishi ambayo inakuwezesha kusoma na kuandika faili. Ikiwa faili haipo, faili mpya imeundwa. Usomaji huanza mwanzoni mwa faili, na uandishi uko katika hali ya kuongeza tu.

    Ikiwa faili ya binary imechakatwa, tumia hali ifuatayo ya ufikiaji ili kubadilisha iliyo hapo juu:

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

    faili iliyofungwa

    Ili kufunga faili, tafadhali tumia kitendakazi cha fclose(). Mfano wa kazi ni kama ifuatavyo:

    int fclose ( FILE * fp );

    • Ikiwa faili imefungwa kwa mafanikio, kazi ya fclose() inarudi sifuri, na ikiwa hitilafu inarudi EOF. Kitendaji hiki, kwa kweli, huondoa data kutoka kwa bafa, hufunga faili, na kutoa kumbukumbu yote iliyotumiwa kwa faili hiyo. EOF inafafanuliwa mara kwa mara katika faili ya kichwa stdio.h

    Maktaba ya kawaida ya C hutoa vipengele mbalimbali vya kusoma na kuandika faili kwa wahusika au kama mfuatano wa urefu usiobadilika.

    Andika kwa faili

    Hapa kuna kazi rahisi zaidi za kuandika herufi kwenye mkondo:

    int fputc ( int c , FILE *fp );

    Chaguo za kukokotoa fputc () huandika thamani ya herufi ya kigezo c kwenye mkondo wa pato ambao fp inaelekeza. Ikiwa maandishi yamefanikiwa, inarudisha herufi iliyoandikwa na EOF ikiwa kosa litatokea. Unaweza kutumia kitendakazi kifuatacho kuandika kamba inayoisha na null kwa mkondo:

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

    Chaguo za kukokotoa fputs () huandika kamba s kwenye mkondo wa pato ambapo fp inaelekeza. Maandishi yakifaulu, inarudisha thamani isiyo hasi na EOF ikiwa hitilafu itatokea. Unaweza pia kutumia kazi ya int fprintf (FILE * fp, const char * umbizo,...) huandika mfuatano kwenye faili. Jaribu mfano ufuatao:

    Kumbuka:Hakikisha kuwa unayo saraka ya tmp inayopatikana, na ikiwa haipo, unahitaji kuiunda kwenye kompyuta yako kwanza.

    / tmp kawaida ni saraka ya muda kwenye mfumo wa Linux. Ikiwa unatumia mfumo wa Windows, unahitaji kuibadilisha kwa saraka iliyopo katika mazingira ya ndani, kama vile: C: \ tmp, D: \ tmp, nk.

    mfano hai

    #pamoja na int main () { FILE *fp = NULL ; fp = fopen ("/tmp/test.txt ", "w+"); fprintf (fp , "Hii ni majaribio ya fprintf...\n "); fputs ("Hii ni majaribio ya fputs...\n ", fp ); funga (fp); }

    Wakati msimbo ulio hapo juu unakusanywa na kutekelezwa, huunda faili mpya test.txt inthe/tmp directory. Na anaandika kwa mistari miwili kwa kutumia kazi mbili tofauti. Hebu tusome faili hii ijayo.

    Soma faili

    Ifuatayo ndio kazi rahisi zaidi kusoma herufi moja kutoka kwa faili:

    int fgetc ( FILE * fp );

    Kitendaji cha fgetc () husoma herufi kutoka kwa faili ya ingizo ambayo fp inaelekeza. Thamani ya kurudi ni herufi iliyosomwa na EOF ikiwa kosa litatokea. Kazi ifuatayo hukuruhusu kusoma kamba kutoka kwa mkondo:

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

    Chaguo za kukokotoa fgets () husoma herufi n-1 kutoka kwa mkondo wa kuingiza sauti unaoelekezwa na fp. Hunakili mfuatano uliosomwa kwenye bafa bafa na kuambatanisha herufi tupu mwishoni ili kutamatisha mfuatano huo.

    Chaguo hili la kukokotoa likikumbana na herufi iliyovunjika '\ n' au EOF ya mwisho wa faili kabla ya kusoma herufi ya mwisho, basi inarejeshwa kwa herufi zilizosomwa pekee, ikijumuisha kukatika kwa mistari. Unaweza pia kutumia int fscanf (FILE * fp, const char * umbizo,...) kitendakazi kusoma kamba kutoka kwenye faili, lakini huacha kusoma inapokutana na nafasi ya kwanza na kukatika kwa mstari.

    mfano hai

    #pamoja na int main () { FILE *fp = NULL ; char buff [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 ); funga (fp); }

    Wakati nambari iliyo hapo juu inakusanywa na kutekelezwa, inasoma faili zilizoundwa katika sehemu iliyotangulia, na kutoa matokeo yafuatayo:

    1: Hii 2: inajaribu fprintf...

    3: Huu ni majaribio ya fputs...

    Kwanza, mbinu ya fscanf() inasoma tu Hii .kwa sababu inakumbana na nafasi nyuma. Pili, piga simu functon fgets () kusoma sehemu iliyobaki hadi mwisho wa mstari. Mwishowe, piga simu fgets () kusoma safu ya pili kabisa.

    Kitendaji cha binary I / O

    Kazi mbili zifuatazo zinatumika kwa pembejeo na pato la binary:

    size_t fread (batili *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file ); size_t fwrite (const void *ptr , size_t size_of_elements , size_t number_of_elements , FILE *a_file );

    Vitendaji vyote viwili vinasomwa na kuandikwa kwa vizuizi vya uhifadhi-kawaida safu au miundo.

    Juu kuhusu kusoma na kuandika faili ya C ni ya HDV Phoelectron Technology Ltd., operesheni ya kiufundi ya programu. Na kampuni ya vifaa vinavyohusiana na mtandao (kama vile: ACONU/ mawasilianoONU/ mwenye akiliONU/ nyuzinyuziONU, n.k.) imeleta pamoja timu ya programu yenye nguvu, kwa kila mteja kubinafsisha mahitaji ya kipekee anayehitaji, pia acha bidhaa zetu ziwe za akili zaidi na za hali ya juu zaidi.



    mtandao聊天