• Giga@hdv-tech.com
  • 24H Reta Servo:
    • 7189078c
    • sns03
    • 6660e33e
    • youtube 拷贝
    • instagramo

    C, Dokumenta Legado kaj Skribo

    Afiŝtempo: Aŭg-11-2023

    Priskribas kiel la C-programisto kreas, malfermas kaj fermas tekstan dosieron aŭ binaran dosieron.

    Dosiero signifas serion da bajtoj, ĉu ĝi estas tekstdosiero aŭ binara dosiero, C Lingvo, ne nur provizas la aliron al la plej alta nivelo funkcioj, sed ankaŭ provizas la suba (OS) voko por prilabori dosierojn sur la stoka aparato. . Ĉi tiu ĉapitro klarigos la gravajn alvokojn en dokumenta administrado.

    malfermita dosiero

    Kutime uzante la funkcion fopen () por krei novan dosieron aŭ malfermi ekzistantan dosieron, ĉi tiu alvoko inicialigas objekton de la tipo FILE, kiu enhavas ĉiujn necesajn informojn por kontroli la fluon. Jen la prototipo de ĉi tiu funkciovoko:

    DOSIERO *fopen ( const char * dosiernomo , const char * reĝimo );

    Ĉi tie dosiernomo estas ĉeno por nomi dosieron, la valoro de la alirreĝimo povas esti unu el la sekvaj valoroj:

    ŝablono

    priskribo

    r

    Malfermu ekzistantan tekstdosieron, kiu permesas ĝin legi.

    w

    Malfermu tekstan dosieron, kiu permesas skribi al la dosiero. Se la dosiero ne ekzistas, nova dosiero estas kreita. Ĉi tie, via programo skribas la enhavon de la komenco de la dosiero. Se la dosiero ekzistas, ĝi estos detranĉita al nula longo kaj reskribita.

    a

    Malfermu tekstdosieron kaj skribu al la dosiero en aldona reĝimo. Se la dosiero ne ekzistas, nova dosiero estas kreita. Ĉi tie, via programo aldonas enhavon al la dosieroj, kiujn vi jam havas.

    r+

    Malfermu tekstan dosieron, kiu permesas vin legi kaj skribi la dosieron.

    w+

    Malfermu tekstan dosieron, kiu permesas vin legi kaj skribi la dosieron. Se la dosiero jam ekzistas, la dosiero estas detranĉita al nula longo, kaj se la dosiero ne ekzistas, nova dosiero estas kreita.

    a+

    Malfermu tekstan dosieron, kiu permesas vin legi kaj skribi la dosieron. Se la dosiero ne ekzistas, nova dosiero estas kreita. La legado komenciĝas ĉe la komenco de la dosiero, kaj la skribo estas nur en aldona reĝimo.

    Se prilaborita binara dosiero, uzu la sekvan alirreĝimon por anstataŭigi la supre:

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

    fermita dosiero

    Por fermi la dosieron, bonvolu uzi la funkcion fclose(). La prototipo de la funkcio estas kiel sekvas:

    int fclose ( DOSIERO *fp );

    • Se la dosiero estas fermita sukcese, la fclose() funkcio liveras nulon, kaj se la eraro redonas EOF. Ĉi tiu funkcio, fakte, forigas la datumojn de la bufro, fermas la dosieron kaj liberigas la tutan memoron uzatan por tiu dosiero. EOF estas konstanto difinita en la kapdosiero stdio.h

    La C-norma biblioteko disponigas diversajn funkciojn por legi kaj skribi dosierojn per signoj aŭ kiel fikslonga ĉeno.

    Skribu al la dosiero

    Jen la plej simplaj funkcioj por skribi signojn al la fluo:

    int fputc ( int c , DOSIERO *fp );

    La funkcio fputc () skribas la signan valoron de la parametro c en la eligfluon al kiu la fp indikas. Se la skriboj sukcesas, ĝi resendas la skriban signon kaj la EOF se okazas eraro. Vi povas uzi la sekvan funkcion por skribi ĉenon finiĝantan per nulo al la fluo:

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

    La funkcio fputs () skribas la ĉenon s al la produktaĵfluo kie la fp montras. Se la skriboj sukcesas, ĝi resendas nenegativan valoron kaj la EOF se okazas eraro. Vi ankaŭ povas uzi la funkcion de int fprintf (DOSIERO * fp, const char * formato,...) skribas ĉenon al la dosiero. Provu la sekvan ekzemplon:

    Noto: Certigu, ke vi havas disponeblan tmp-dosierujon, kaj se ĝi ne ekzistas, vi unue devas krei ĝin en via komputilo.

    / tmp estas kutime provizora dosierujo en la Linuksa sistemo. Se vi funkcias per la Vindoza sistemo, vi devas modifi ĝin al ekzistanta dosierujo en la loka medio, kiel: C: \ tmp, D: \ tmp, ktp.

    vivanta ekzemplo

    #inkluzivi int main () { DOSIERO *fp = NULL ; fp = fopen ("/tmp/test.txt ", "w+"); fprintf (fp , "Ĉi tio testas por fprintf...\n "); fputs ("Ĉi tio estas testado por fputs...\n ", fp ); fclose (fp ); }

    Kiam la supra kodo estas kompilita kaj efektivigita, ĝi kreas novan dosieron test.txt en la dosierujo /tmp. Kaj skribas al du linioj uzante du malsamajn funkciojn. Ni legu ĉi tiun dosieron poste.

    Legu la dosieron

    La sekvanta estas la plej simpla funkcio por legi ununuran signon el dosiero:

    int fgetc ( DOSIERO * fp );

    La fgetc () funkcio legas signon de la eniga dosiero al kiu la fp montras. La revena valoro estas la legita signo kaj la EOF se okazas eraro. La sekva funkcio permesas al vi legi ĉenon el fluo:

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

    La funkcio fgets () legas n-1 signojn el la eniga fluo direktita de fp. Ĝi kopias la legitan ĉenon al la bufro bufro kaj aldonas nulan signon ĉe la fino por fini la ĉenon.

    Se ĉi tiu funkcio renkontas rompitan linian signon '\ n' aŭ la EOF de la fino de dosiero antaŭ legi la lastan signon, tiam nur revenas al la legitaj signoj, inkluzive de linio-rompoj. Vi ankaŭ povas uzi la funkcion int fscanf (DOSIERO * fp, const char * formato,...) por legi la ĉenon el la dosiero, sed ĝi ĉesas legi kiam ili renkontas la unuan spacon kaj linion.

    vivanta ekzemplo

    #inkluzivi int main () { DOSIERO *fp = NULL ; charsablokolora [255]; fp = fopen ("/tmp/test.txt ", "r "); fscanf (fp , "%s ", sablo); printf ("1: %s \n ", sablo); fgets (buff , 255, (DOSIERO *)fp ); printf ("2: %s \n ", sablo); fgets (buff , 255, (DOSIERO *)fp ); printf ("3: %s \n ", sablo); fclose (fp ); }

    Kiam la supra kodo estas kompilita kaj efektivigita, ĝi legas la dosierojn kreitajn en la antaŭa sekcio, produktante la sekvajn rezultojn:

    1: Ĉi tiu 2: testas por fprintf...

    3: Ĉi tio testas por fputoj...

    Unue, la metodo de fscanf() nur legas Ĉi .ĉar ĝi renkontas spacon en la malantaŭo. Due, voku functon fgets () por legi la restantan parton ĝis la fino de la linio. Fine, voku fgets () por legi la duan vicon tute.

    Binara I/O-funkcio

    La sekvaj du funkcioj estas uzitaj por la binara enigo kaj eligo:

    size_t fread (void *ptr , size_t size_of_elements , size_t number_of_elements , DOSIERO *a_dosiero ); size_t fwrite (const void *ptr , size_t size_of_elements , size_t number_of_elements , DOSIERO *a_dosiero );

    Ambaŭ funkcioj estas legitaj kaj skribataj por stokadblokoj - kutime tabeloj aŭ strukturoj.

    Supre pri C-dosierlegado kaj skribo apartenas al HDV Phoelectron Technology Ltd., programaro teknika operacio. Kaj la firmao por reto-rilata ekipaĵo (kiel ekzemple: ACONU/ komunikadoONU/ inteligentaONU/ fibroONU, ktp.) kunigis potencan programaron teamon, por ĉiu kliento personecigi la ekskluzivaj postuloj kiuj bezonas ĝin, ankaŭ lasu niajn produktojn pli inteligentaj kaj progresintaj.



    retejo聊天