• Giga@hdv-tech.com
  • 24H အွန်လိုင်းဝန်ဆောင်မှု-
    • 7189078c
    • sns03
    • 6660e33e
    • youtube သည် 拷贝
    • အင်စတာဂရမ်

    C၊ Document Reading and Writing

    တင်ချိန်- သြဂုတ်-၁၁-၂၀၂၃

    C ပရိုဂရမ်မာသည် စာသားဖိုင်တစ်ခု သို့မဟုတ် ဒွိဖိုင်တစ်ခုကို ဖန်တီးပုံ၊ ဖွင့်ပုံနှင့် ပိတ်ပုံကို ဖော်ပြသည်။

    ဖိုင်တစ်ခုသည် စာသားဖိုင် သို့မဟုတ် ဒွိဖိုင်ဖြစ်စေဖြစ်စေ C Language သည် ထိပ်တန်းအဆင့်လုပ်ဆောင်ချက်များသို့ ဝင်ရောက်ခွင့်ကို ပေးစွမ်းရုံသာမက သိုလှောင်ကိရိယာရှိ ဖိုင်များကို လုပ်ဆောင်ရန်အတွက် အရင်းခံ (OS) ခေါ်ဆိုမှုကိုလည်း ပံ့ပိုးပေးပါသည်။ .ဤအခန်းတွင် စာရွက်စာတမ်းစီမံခန့်ခွဲမှုတွင် အရေးကြီးသောခေါ်ဆိုမှုများကို ရှင်းပြပါမည်။

    ဖိုင်ကိုဖွင့်

    အများအားဖြင့် ဖိုင်အသစ်တစ်ခုဖန်တီးရန် သို့မဟုတ် ရှိပြီးသားဖိုင်တစ်ခုဖွင့်ရန် fopen () လုပ်ဆောင်ချက်ကို အသုံးပြု၍ ဤခေါ်ဆိုမှုသည် စီးဆင်းမှုကို ထိန်းချုပ်ရန် လိုအပ်သော အချက်အလက်အားလုံးပါရှိသော ဖိုင်အမျိုးအစား၏ အရာဝတ္ထုတစ်ခုကို အစပြုပါသည်။ဤသည်မှာ ဤလုပ်ဆောင်ချက်ခေါ်ဆိုမှု၏ ရှေ့ပြေးပုံစံဖြစ်သည်-

    ဖိုင် *fopen ( const char * ဖိုင်အမည် ၊ const char * မုဒ် );

    ဤနေရာတွင် ဖိုင်အမည်သည် ဖိုင်တစ်ခုကို အမည်ပေးရန်အတွက် စာကြောင်းတစ်ခုဖြစ်ပြီး၊ အသုံးပြုခွင့်မုဒ်၏ တန်ဖိုးသည် အောက်ပါတန်ဖိုးများထဲမှ တစ်ခု ဖြစ်နိုင်သည်-

    ပုံစံ

    ဖော်ပြချက်

    r

    ၎င်းကို ဖတ်နိုင်စေမည့် ရှိပြီးသား စာသားဖိုင်ကို ဖွင့်ပါ။

    w

    ဖိုင်သို့ စာရေးခွင့်ပြုသော စာသားဖိုင်ကို ဖွင့်ပါ။ဖိုင်မရှိပါက၊ ဖိုင်အသစ်တစ်ခု ဖန်တီးမည်ဖြစ်သည်။ဤတွင်၊ သင့်ပရိုဂရမ်သည် ဖိုင်၏အစမှ အကြောင်းအရာကို ရေးသားသည်။ဖိုင်ရှိလျှင် ၎င်းကို အရှည် သုညအထိ ဖြတ်တောက်ပြီး ပြန်လည်ရေးသားပါမည်။

    a

    စာသားဖိုင်ကိုဖွင့်ပြီး နောက်ဆက်တွဲမုဒ်တွင် ဖိုင်သို့ စာရေးပါ။ဖိုင်မရှိပါက၊ ဖိုင်အသစ်တစ်ခု ဖန်တီးမည်ဖြစ်သည်။ဤတွင်၊ သင့်ပရိုဂရမ်သည် သင့်ရှိပြီးသားဖိုင်များသို့ အကြောင်းအရာကို ပေါင်းထည့်သည်။

    r+

    ဖိုင်ကို ဖတ်နိုင်၊ ရေးနိုင်စေမည့် စာသားဖိုင်ကို ဖွင့်ပါ။

    w+

    ဖိုင်ကို ဖတ်နိုင်၊ ရေးနိုင်စေမည့် စာသားဖိုင်ကို ဖွင့်ပါ။ဖိုင်ရှိပြီးသားဖြစ်ပါက၊ ဖိုင်ကို သုညအလျားသို့ ဖြတ်တောက်ပြီး ဖိုင်မရှိပါက၊ ဖိုင်အသစ်တစ်ခု ဖန်တီးမည်ဖြစ်သည်။

    a+

    ဖိုင်ကို ဖတ်နိုင်၊ ရေးနိုင်စေမည့် စာသားဖိုင်ကို ဖွင့်ပါ။ဖိုင်မရှိပါက၊ ဖိုင်အသစ်တစ်ခု ဖန်တီးမည်ဖြစ်သည်။ဖိုင်၏အစတွင် စတင်ဖတ်ရှုပြီး ရေးသည် နောက်ဆက်တွဲမုဒ်တွင်သာဖြစ်သည်။

    binary ဖိုင်ကို လုပ်ဆောင်ပြီးပါက၊ အထက်ဖော်ပြပါတို့ကို အစားထိုးရန် အောက်ပါဝင်ရောက်ခွင့်မုဒ်ကို အသုံးပြုပါ-

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

    ပိတ်ထားသောဖိုင်

    ဖိုင်ကိုပိတ်ရန် fclose() လုပ်ဆောင်ချက်ကို အသုံးပြုပါ။လုပ်ဆောင်ချက်၏ ရှေ့ပြေးပုံစံမှာ အောက်ပါအတိုင်းဖြစ်သည်။

    int fclose ( FILE *fp );

    • ဖိုင်ကိုအောင်မြင်စွာပိတ်ပါက၊ fclose() လုပ်ဆောင်ချက်သည် သုညသို့ပြန်သွားမည်ဖြစ်ပြီး error သည် EOF သို့ပြန်သွားပါက၊တကယ်တော့ ဒီလုပ်ဆောင်ချက်က ဒေတာတွေကို ကြားခံကနေ ဖယ်ရှားပေးတယ်၊ ဖိုင်ကို ပိတ်ပြီး အဲဒီဖိုင်အတွက် အသုံးပြုတဲ့ မှတ်ဉာဏ်အားလုံးကို ထုတ်ပေးပါတယ်။EOF သည် ခေါင်းစီးဖိုင် stdio.h တွင် ကိန်းသေသတ်မှတ်ထားသော ကိန်းသေတစ်ခုဖြစ်သည်။

    C စံပြစာကြည့်တိုက်သည် စာလုံးများအလိုက် ဖိုင်များကိုဖတ်ရန်နှင့် ရေးရန် လုပ်ဆောင်ချက်အမျိုးမျိုးကို ပံ့ပိုးပေးပါသည်။

    ဖိုင်ကိုရေးပါ။

    ဤသည်မှာ stream တွင်ဇာတ်ကောင်များရေးရန်အရိုးရှင်းဆုံးလုပ်ဆောင်ချက်များဖြစ်သည်-

    int fputc ( int c ၊ FILE *fp );

    လုပ်ဆောင်ချက် fputc () သည် fp ညွှန်ပြသည့် အထွက်စီးကြောင်းတွင် ကန့်သတ်ချက် c ၏ ဇာတ်ကောင်တန်ဖိုးကို ရေးပေးသည်။ရေးခြင်းအောင်မြင်ပါက၊ error ဖြစ်ပေါ်လာပါက ၎င်းသည် ရေးထားသောစာလုံးနှင့် EOF ကို ပြန်ပေးသည်။stream သို့ null ဖြင့်အဆုံးသတ်သော စာကြောင်းတစ်ခုရေးရန် အောက်ပါလုပ်ဆောင်ချက်ကို သင်အသုံးပြုနိုင်သည်-

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

    လုပ်ဆောင်ချက် fputs () သည် fp ညွှန်ပြသည့် အထွက်စီးကြောင်းသို့ string s ကို ရေးသားသည်။ရေးခြင်းအောင်မြင်ပါက၊ error ဖြစ်ပေါ်လာပါက ၎င်းသည် အနုတ်လက္ခဏာမဟုတ်သောတန်ဖိုးနှင့် EOF ကို ပြန်ပေးသည်။int fprintf (FILE * fp၊ const char * ဖော်မတ်၊...) ၏ လုပ်ဆောင်ချက်ကို ဖိုင်သို့ စာတန်းတစ်ခုရေးနိုင်သည်။အောက်ပါ ဥပမာကို စမ်းကြည့်ပါ။

    မှတ်ချက်- သင့်တွင်ရရှိနိုင်သော tmp လမ်းညွှန်တစ်ခုရှိကြောင်း သေချာပါစေ။ ၎င်းတွင်မရှိပါက၊ ၎င်းကို သင့်ကွန်ပျူတာတွင် ဦးစွာဖန်တီးရန် လိုအပ်ပါသည်။

    /tmp သည် အများအားဖြင့် Linux စနစ်ရှိ ယာယီလမ်းညွှန်တစ်ခုဖြစ်သည်။Windows စနစ်တွင် အသုံးပြုပါက၊ C:\tmp၊ D:\tmp စသည်ဖြင့် ၎င်းကို စက်တွင်းပတ်ဝန်းကျင်ရှိ ရှိပြီးသား လမ်းညွှန်တစ်ခုသို့ ပြောင်းလဲရန် လိုအပ်ပါသည်။

    သက်ရှိဥပမာ

    #ပါဝင်ပါတယ်။int main () { FILE *fp = NULL ;fp = fopen("/tmp/test.txt ", "w+");fprintf (fp , "ဒါက fprintf...\n ");fputs ("ဤသည်မှာ fputs အတွက် စမ်းသပ်နေသည်...\n ", fp );fclose (fp );}

    အထက်ဖော်ပြပါ ကုဒ်ကို စုစည်းပြီး လုပ်ဆောင်သောအခါ၊ ၎င်းသည် /tmp directory တွင် ဖိုင်အသစ် test.txt ကို ဖန်တီးသည်။မတူညီတဲ့ function နှစ်ခုကိုသုံးပြီး စာကြောင်းနှစ်ကြောင်းရေးတယ်။ဒီဖိုင်ကို နောက်တစ်ခု ဆက်ဖတ်ကြည့်ရအောင်။

    ဖိုင်ကိုဖတ်ပါ။

    အောက်ပါတို့သည် ဖိုင်တစ်ခုမှ စာလုံးတစ်လုံးကို ဖတ်ရန် အရိုးရှင်းဆုံးလုပ်ဆောင်ချက်ဖြစ်သည်-

    int fgetc ( FILE * fp );

    fgetc () လုပ်ဆောင်ချက်သည် fp အမှတ်ပေးသည့် input ဖိုင်မှ ဇာတ်ကောင်တစ်ခုကို ဖတ်သည်။အမှားအယွင်းတစ်ခုဖြစ်ပေါ်ပါက ပြန်ပေးသည့်တန်ဖိုးမှာ စာလုံးဖတ်ပြီး EOF ဖြစ်သည်။အောက်ပါလုပ်ဆောင်ချက်သည် သင့်အား စီးကြောင်းတစ်ခုမှ စာကြောင်းတစ်ကြောင်းကို ဖတ်နိုင်စေသည်-

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

    လုပ်ဆောင်ချက် fgets () သည် fp မှညွှန်ကြားသော input stream မှ n-1 စာလုံးများကိုဖတ်သည်။၎င်းသည် ဖတ်ထားသည့်စာကြောင်းအား ကြားခံ buf သို့ကူးယူပြီး string ကိုအဆုံးသတ်ရန် အဆုံးတွင် null စာလုံးကို ထပ်ထည့်သည်။

    အကယ်၍ ဤလုပ်ဆောင်ချက်သည် နောက်ဆုံးစာလုံးကို မဖတ်မီ ဖိုင်အဆုံး၏ ကျိုးနေသော လိုင်းအက္ခရာ '\n' သို့မဟုတ် EOF နှင့် ကြုံတွေ့ပါက၊ ထို့နောက် လိုင်းခွဲခြင်းအပါအဝင် ဖတ်ပြီးသော စာလုံးများသို့သာ ပြန်သွားပါ။ဖိုင်မှစာကြောင်းကိုဖတ်ရန် int fscanf (FILE * fp၊ const char * ဖော်မတ်၊...) လုပ်ဆောင်ချက်ကို သင်အသုံးပြုနိုင်သော်လည်း ပထမ space နှင့် line break ကိုတွေ့သောအခါတွင် ၎င်းသည် စာဖတ်ခြင်းကို ရပ်သွားမည်ဖြစ်သည်။

    သက်ရှိဥပမာ

    #ပါဝင်ပါတယ်။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() ၏နည်းလမ်းသည် ဤအရာကိုသာဖတ်သည်။ အကြောင်းမှာ ၎င်းသည် နောက်ကျောတွင် နေရာလွတ်တစ်ခုတွေ့သောကြောင့်ဖြစ်သည်။ဒုတိယ၊ ကျန်အပိုင်းကို စာကြောင်းအဆုံးအထိဖတ်ရန် Functon fgets () ကိုခေါ်ဆိုပါ။နောက်ဆုံးတွင် ဒုတိယအတန်းကို အပြည့်အစုံဖတ်ရန် fgets() ကိုခေါ်ဆိုပါ။

    Binary I/O လုပ်ဆောင်ချက်

    binary input နှင့် output အတွက် အောက်ပါ function နှစ်ခုကို အသုံးပြုသည် ။

    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 );

    လုပ်ဆောင်ချက်နှစ်ခုစလုံးသည် သိုလှောင်မှုလုပ်ကွက်များအတွက် ဖတ်ပြီးရေးသည်- အများအားဖြင့် arrays သို့မဟုတ် structures များဖြစ်သည်။

    အထက်ဖော်ပြပါ C ဖိုင်ဖတ်ရှုခြင်းနှင့် ရေးသားခြင်းအကြောင်းသည် HDV Phoelectron Technology Ltd.၊ ဆော့ဖ်ဝဲလ်နည်းပညာပိုင်းဆိုင်ရာ ဆောင်ရွက်မှုတစ်ခုဖြစ်သည်။နှင့် ကွန်ရက်ဆက်စပ်ပစ္စည်းများအတွက် ကုမ္ပဏီ (ဥပမာ- ACONU/ ဆက်သွယ်ရေးONU/ အသိဉာဏ်ONU/ ဖိုက်ဘာONUစသည်ဖြင့်) ဖောက်သည်တိုင်းသည် လိုအပ်နေသော သီးသန့်တောင်းဆိုချက်များကို စိတ်ကြိုက်ပြင်ဆင်ရန်အတွက် အားကောင်းသည့်ဆော့ဖ်ဝဲလ်အဖွဲ့ကို စုစည်းထားပြီး ကျွန်ုပ်တို့၏ထုတ်ကုန်များကို ပိုမိုထက်မြက်ပြီး အဆင့်မြင့်စေပါသည်။



    ဝဘ်