• Giga@hdv-tech.com
  • 24H تور مۇلازىمىتى:
    • 7189078c
    • sns03
    • 6660e33e
    • youtube 拷贝
    • instagram

    C ، ھۆججەت ئوقۇش ۋە يېزىش

    يوللانغان ۋاقتى: 8-ئاينىڭ 11-كۈنىدىن 20-كۈنىگىچە

    C پروگراممېرنىڭ تېكىست ھۆججىتى ياكى ئىككىلىك ھۆججەتنى قانداق قۇرۇش ، ئېچىش ۋە تاقاشنى تەسۋىرلەيدۇ.

    ھۆججەت ، مەيلى تېكىست ھۆججىتى ياكى ئىككىلىك ھۆججەت بولسۇن ، C تىل بولسۇن ، بىر قاتار بايتلارنى كۆرسىتىدۇ ، ئۇ يۇقىرى قاتلامدىكى ئىقتىدارلارنى زىيارەت قىلىپلا قالماي ، ساقلاش ئۈسكۈنىسىدىكى ھۆججەتلەرنى بىر تەرەپ قىلىشتىكى ئاساسىي (OS) چاقىرىشنىمۇ تەمىنلەيدۇ. . بۇ باب ھۆججەت باشقۇرۇشتىكى مۇھىم چاقىرىقلارنى چۈشەندۈرۈپ بېرىدۇ.

    ئوچۇق ھۆججەت

    ئادەتتە fopen () فۇنكسىيەسىنى ئىشلىتىپ يېڭى ھۆججەت قۇرۇش ياكى مەۋجۇت ھۆججەتنى ئېچىش ئۈچۈن ، بۇ چاقىرىش FILE تىپىدىكى ئوبيېكتنى قوزغىتىدۇ ، بۇ ئېقىم مىقدارىنى كونترول قىلىش ئۈچۈن زۆرۈر بولغان بارلىق ئۇچۇرلارنى ئۆز ئىچىگە ئالىدۇ. بۇ ئىقتىدار چاقىرىشنىڭ ئەسلى تىپى:

    FILE * fopen (const char * ھۆججەت ئىسمى ، const char * ھالىتى);

    بۇ يەردە ھۆججەت ئىسمى ھۆججەتكە ئىسىم قويۇش ئۈچۈن بىر قۇر بولۇپ ، زىيارەت ھالىتىنىڭ قىممىتى تۆۋەندىكى قىممەتلەرنىڭ بىرى بولالايدۇ:

    ئەندىزە

    description

    r

    ئۇنى ئوقۇغىلى بولىدىغان تېكىست ھۆججىتىنى ئېچىڭ.

    w

    ھۆججەتكە يېزىشقا بولىدىغان تېكىست ھۆججىتىنى ئېچىڭ. ئەگەر ھۆججەت مەۋجۇت بولمىسا ، يېڭى ھۆججەت قۇرۇلدى. بۇ يەردە ، پروگراممىڭىز ھۆججەتنىڭ بېشىدىن باشلاپ مەزمۇن يازىدۇ. ئەگەر ھۆججەت مەۋجۇت بولسا ، نۆل ئۇزۇنلۇقتا قىسقارتىلىپ قايتا يېزىلىدۇ.

    a

    تېكىست ھۆججىتىنى ئېچىڭ ھەمدە ھۆججەتكە قوشۇمچە ھالەتتە يېزىڭ. ئەگەر ھۆججەت مەۋجۇت بولمىسا ، يېڭى ھۆججەت قۇرۇلدى. بۇ يەردە ، پروگراممىڭىز سىزدە بار بولغان ھۆججەتلەرگە مەزمۇن قوشىدۇ.

    r+

    ھۆججەتنى ئوقۇش ۋە يېزىش ئىمكانىيىتىگە ئىگە قىلىدىغان تېكىست ھۆججىتىنى ئېچىڭ.

    w+

    ھۆججەتنى ئوقۇش ۋە يېزىش ئىمكانىيىتىگە ئىگە قىلىدىغان تېكىست ھۆججىتىنى ئېچىڭ. ئەگەر بۇ ھۆججەت ئاللىقاچان مەۋجۇت بولسا ، ھۆججەت نۆل ئۇزۇنلۇقتا قىسقارتىلىدۇ ، ئەگەر ھۆججەت مەۋجۇت بولمىسا ، يېڭى ھۆججەت قۇرۇلدى.

    a+

    ھۆججەتنى ئوقۇش ۋە يېزىش ئىمكانىيىتىگە ئىگە قىلىدىغان تېكىست ھۆججىتىنى ئېچىڭ. ئەگەر ھۆججەت مەۋجۇت بولمىسا ، يېڭى ھۆججەت قۇرۇلدى. ئوقۇش ھۆججەتنىڭ بېشىدا باشلىنىدۇ ، يېزىش پەقەت قوشۇمچە ھالەتتە.

    ئەگەر ئىككىلىك ھۆججەت بىر تەرەپ قىلىنغان بولسا ، تۆۋەندىكى زىيارەت ھالىتىنى ئىشلىتىپ ، يۇقىرىقىلارنى ئالماشتۇرۇڭ:

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

    يېپىق ھۆججەت

    ھۆججەتنى تاقاش ئۈچۈن fclose () ئىقتىدارىنى ئىشلىتىڭ. ئىقتىدارنىڭ ئەسلى شەكلى تۆۋەندىكىچە:

    int fclose (FILE * fp);

    • ئەگەر ھۆججەت مۇۋەپپەقىيەتلىك تاقالسا ، fclose () ئىقتىدارى نۆلگە قايتىدۇ ، خاتالىق EOF نى قايتۇرسا. بۇ ئىقتىدار ئەمەلىيەتتە بۇففېردىكى سانلىق مەلۇماتلارنى چىقىرىپ تاشلايدۇ ، ھۆججەتنى تاقايدۇ ۋە بۇ ھۆججەتكە ئىشلىتىلگەن بارلىق ئىچكى ساقلىغۇچلارنى قويۇپ بېرىدۇ. EOF بولسا stdio.h ماۋزۇ ھۆججىتىدە ئېنىقلىما بېرىلگەن

    C ئۆلچەملىك كۇتۇپخانا ھۆججەتلەرنى ھەرپلەر ئارقىلىق ياكى مۇقىم ئۇزۇنلۇقتا ئوقۇش ۋە يېزىش ئۈچۈن ھەر خىل ئىقتىدارلار بىلەن تەمىنلەيدۇ.

    ھۆججەتكە يېزىڭ

    بۇ يەردە ئېقىنغا ھەرپ يېزىشتىكى ئەڭ ئاددىي ئىقتىدارلار:

    int fputc (int c, FILE * fp);

    Fputc () فۇنكىسىيەسى c پارامېتىرنىڭ ھەرپ قىممىتىنى fp كۆرسەتكەن چىقىرىش ئېقىمىغا يازىدۇ. ئەگەر يېزىش مۇۋەپپەقىيەتلىك بولسا ، خاتالىق كۆرۈلسە يېزىلغان ھەرپ ۋە EOF نى قايتۇرىدۇ. تۆۋەندىكى ئىقتىدارنى ئىشلىتىپ ئېقىنغا نۆل بىلەن ئاخىرلاشقان بىر قۇر يازالايسىز:

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

    فۇنكىسىيە fputs () فۇنكىسىيەنى fp كۆرسەتكەن چىقىرىش ئېقىمىغا يېزىپ بېرىدۇ. ئەگەر يازغۇچىلار مۇۋەپپەقىيەت قازانسا ، مەنپىي بولمىغان قىممەت ۋە خاتالىق كۆرۈلسە EOF نى قايتۇرىدۇ. سىز يەنە int fprintf (FILE * fp ، const char * فورماتى ، ...) فۇنكىسىيەسىنى ئىشلىتەلەيسىز. تۆۋەندىكى مىسالنى سىناپ بېقىڭ:

    ئەسكەرتىش: ئىشلەتكىلى بولىدىغان tmp مۇندەرىجىسى بارلىقىنى جەزملەشتۈرۈڭ ، ئەگەر ئۇ بولمىسا ، ئالدى بىلەن ئۇنى كومپيۇتېرىڭىزدا قۇرۇشىڭىز كېرەك.

    / tmp ئادەتتە Linux سىستېمىسىدىكى ۋاقىتلىق مۇندەرىجە. ئەگەر Windows سىستېمىسىدا ئىجرا قىلسىڭىز ، ئۇنى يەرلىك مۇھىتتىكى مەۋجۇت مۇندەرىجىگە ئۆزگەرتىشىڭىز كېرەك ، مەسىلەن: C: \ tmp, D: \ tmp قاتارلىقلار.

    جانلىق مىسال

    #include int main () {FILE * fp = NULL; fp = fopen ("/tmp/test.txt", "w +"); fprintf (fp, "بۇ fprintf ئۈچۈن سىناق ... \ n"); fputs ("بۇ fputs نى سىنايدۇ ... \ n", fp); fclose (fp); }

    يۇقارقى كود تۈزۈلۈپ ئىجرا قىلىنغاندا ، ئۇ يېڭى ھۆججەت test.txt inthe / tmp مۇندەرىجىسى قۇرىدۇ. ھەمدە ئوخشىمىغان ئىككى خىل ئىقتىدارنى ئىشلىتىپ ئىككى قۇرغا يازىدۇ. بۇ ھۆججەتنى كېيىنكى قەدەمدە ئوقۇيمىز.

    ھۆججەتنى ئوقۇڭ

    تۆۋەندىكىسى ھۆججەتتىكى يەككە ھەرپنى ئوقۇشتىكى ئەڭ ئاددىي ئىقتىدار:

    int fgetc (FILE * fp);

    Fgetc () ئىقتىدارى كىرگۈزۈش ھۆججىتىدىن fp كۆرسەتكەن ھەرپنى ئوقۇيدۇ. قايتۇرۇش قىممىتى ئوقۇش خاراكتېرى ۋە EOF خاتالىق كۆرۈلسە. تۆۋەندىكى ئىقتىدار ئېقىندىن بىر قۇر ئوقۇيالايسىز:

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

    فۇنكسىيە fgets () fp يېتەكلىگەن كىرگۈزۈش ئېقىمىدىن n-1 ھەرپلەرنى ئوقۇيدۇ. ئۇ ئوقۇش بەلگىسىنى بۇففېر بۇفقا كۆچۈرۈپ ، ئاخىرىدا قۇرۇق ھەرپ قوشۇپ بۇ تىزمىنى ئاخىرلاشتۇرىدۇ.

    ئەگەر بۇ ئىقتىدار ئاخىرقى ھەرپنى ئوقۇشتىن بۇرۇن بۇزۇلغان قۇر ھەرپ '\ n' ياكى ھۆججەتنىڭ ئاخىرىدىكى EOF غا يولۇقسا ، ئۇنداقتا پەقەت قۇر ئۈزۈشنى ئۆز ئىچىگە ئالغان ئوقۇلغان ھەرپلەرگە قايتىدۇ. سىز يەنە int fscanf (FILE * fp ، const char * فورماتى ، ...) فۇنكسىيەسىنى ئىشلىتىپ ھۆججەتتىكى تىزمىنى ئوقۇيالايسىز ، ئەمما بىرىنچى بوشلۇق ۋە قۇر ئۈزۈلۈپ قالغاندا ئۇ ئوقۇشتىن توختايدۇ.

    جانلىق مىسال

    #include 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); fclose (fp); }

    يۇقارقى كود تۈزۈلۈپ ئىجرا قىلىنغاندا ، ئالدىنقى بۆلەكتە قۇرۇلغان ھۆججەتلەرنى ئوقۇيدۇ ، تۆۋەندىكىدەك نەتىجىلەرنى بېرىدۇ:

    1: بۇ 2: fprintf نى سىناق قىلىۋاتىدۇ ...

    3: بۇ fputs نى سىناق قىلىۋاتىدۇ ...

    ئالدى بىلەن ، fscanf () ئۇسۇلى پەقەت بۇنىلا ئوقۇيدۇ. چۈنكى ئۇ كەينىدىكى بوشلۇققا دۇچ كېلىدۇ. ئىككىنچىدىن ، فۇنكسىيە fgets () غا تېلېفون قىلىپ ، قالغان قىسمىنى قۇرنىڭ ئاخىرىغىچە ئوقۇڭ. ئاخىرىدا ، ئىككىنچى قۇرنى تولۇق ئوقۇش ئۈچۈن fgets () غا تېلېفون قىلىڭ.

    ئىككىلىك I / O ئىقتىدارى

    ئىككىلىك كىرگۈزۈش ۋە چىقىرىش ئۈچۈن تۆۋەندىكى ئىككى ئىقتىدار ئىشلىتىلىدۇ:

    size_t fread (void * 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);

    ھەر ئىككى ئىقتىدار ساقلاش بۆلەكلىرى ئۈچۈن ئوقۇلىدۇ ۋە يېزىلىدۇ.

    C ھۆججەت ئوقۇش ۋە يېزىش ھەققىدە يۇقىرىدا يۇمشاق دېتال تېخنىكىلىق مەشغۇلات HDV Phoelectron Technology چەكلىك شىركىتىگە تەۋە. ھەمدە تورغا مۇناسىۋەتلىك ئۈسكۈنىلەر ئۈچۈن شىركەت (مەسىلەن: ACONU/ ئالاقەONU/ ئەقىللىقONU/ تالاONUقاتارلىقلار) كۈچلۈك يۇمشاق دېتال قوشۇنىنى بىر يەرگە توپلىدى ، ھەر بىر خېرىدار ئۆزىگە ئېھتىياجلىق بولغان ئالاھىدە تەلەپلەرنى خاسلاشتۇرىدۇ ، مەھسۇلاتلىرىمىزنى تېخىمۇ ئەقىللىق ۋە ئىلغار قىلىدۇ.



    web 聊天