• 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 قاتارلىقلار.

    جانلىق مىسال

    #includeint 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 * فورماتى ، ...) فۇنكسىيەسىنى ئىشلىتىپ ھۆججەتتىكى تىزمىنى ئوقۇيالايسىز ، ئەمما بىرىنچى بوشلۇق ۋە قۇر ئۈزۈلۈپ قالغاندا ئۇ ئوقۇشتىن توختايدۇ.

    جانلىق مىسال

    #includeint 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قاتارلىقلار) كۈچلۈك يۇمشاق دېتال قوشۇنىنى بىر يەرگە توپلىدى ، ھەر بىر خېرىدار ئۆزىگە ئېھتىياجلىق بولغان ئالاھىدە تەلەپلەرنى خاسلاشتۇرىدۇ ، مەھسۇلاتلىرىمىزنى تېخىمۇ ئەقىللىق ۋە ئىلغار قىلىدۇ.



    تور 聊天