• Giga@hdv-tech.com
  • 24 саат онлайн кызматы:
    • 7189078c
    • sns03
    • 6660e33e
    • youtube 拷贝
    • instagram

    C, Документти окуу жана жазуу

    Посттун убактысы: 11-август-2023

    C программистинин тексттик файлды же бинардык файлды кантип түзөрүн, ачарын жана жабаарын сүрөттөйт.

    Файл тексттик файл болобу же бинардык файл болобу, C Language бир катар байттарды билдирет, жогорку деңгээлдеги функцияларга гана мүмкүнчүлүк бербестен, ошондой эле сактагыч түзүлүштөгү файлдарды иштетүү үчүн негизги (OS) чалууларды да камсыз кылат. . Бул бөлүмдө документ башкаруудагы маанилүү чакырыктар түшүндүрүлөт.

    ачык файл

    Адатта, жаңы файлды түзүү же бар файлды ачуу үчүн fopen () функциясын колдонуп, бул чакыруу агымды башкаруу үчүн бардык керектүү маалыматты камтыган FILE түрүндөгү объектти инициализациялайт. Бул функция чакыруунун прототиби:

    FILE *fopen (const char * файлдын аты, const char * режими);

    Бул жерде файлдын аты файлды атоо үчүн сап болуп саналат, кирүү режиминин мааниси төмөнкү маанилердин бири болушу мүмкүн:

    үлгү

    сүрөттөмө

    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 баш файлында аныкталган константа

    С стандарттык китепканасы файлдарды символдор боюнча же белгиленген узундуктагы сап катары окуу жана жазуу үчүн ар кандай функцияларды камсыз кылат.

    Файлга жазыңыз

    Бул жерде агымга символдорду жазуу үчүн эң жөнөкөй функциялар:

    int fputc ( int c , FILE * fp );

    fputc () функциясы c параметринин символдук маанисин fp көрсөткөн чыгуу агымына жазат. Эгерде жазуулар ийгиликтүү болсо, ал жазылган символду жана ката кетсе EOF кайтарат. Агымга нөл менен аяктаган сапты жазуу үчүн төмөнкү функцияны колдонсоңуз болот:

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

    fputs () функциясы fp көрсөтүп турган чыгаруу агымына s сабын жазат. Эгерде жазуу ийгиликтүү болсо, ал терс эмес маанини кайтарат жана ката пайда болсо, 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 каталогунда жаңы test.txt файлын түзөт. Жана эки башка функцияны колдонуп эки сапка жазат. Келгиле, бул файлды кийинки окуйлу.

    Файлды окуңуз

    Төмөндө файлдан бир символду окуу үчүн эң жөнөкөй функция:

    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 * формат,...) функциясын колдонсоңуз болот, бирок ал биринчи боштук жана сап үзгүлтүккө учураганда окууну токтотот.

    тирүү үлгү

    #киргизүү int main () { FILE *fp = NULL ; char buff [255]; fp = fopen ("/tmp/test.txt ", "r"); fscanf (fp , "%s ", буфф ); printf ("1: %s \n ", буфф ); fgets (buff, 255, (FILE *)fp); printf ("2: %s \n ", буфф ); fgets (buff, 255, (FILE *)fp); printf ("3: %s \n ", буфф ); fclose (fp ); }

    Жогорудагы код түзүлгөндө жана аткарылганда, ал мурунку бөлүмдө түзүлгөн файлдарды окуп, төмөнкү натыйжаларды берет:

    1: Бул 2: fprintf үчүн сынап жатат...

    3: Бул fputs үчүн сыноо болуп саналат ...

    Биринчиден, fscanf() методу муну гана окуйт.себеби ал арткы жагында боштукка туш болот. Экинчиден, саптын аягына чейин калган бөлүгүн окуу үчүн functon fgets () чакырыңыз. Акырында, экинчи сапты толугу менен окуу үчүн fgets () чакырыңыз.

    Бинардык киргизүү/чыгаруу функциясы

    Төмөнкү эки функция экилик киргизүү жана чыгаруу үчүн колдонулат:

    size_t fread (жараксыз *ptr , size_t size_of_elements , size_t элементтердин саны , FILE *a_file ); size_t fwrite (const void *ptr , size_t size_of_elements , size_t элементтердин_саны , FILE *a_file );

    Эки функция тең сактоо блоктору үчүн окулат жана жазылат - адатта массивдер же структуралар.

    Жогорудагы C файлын окуу жана жазуу HDV Phoelectron Technology Ltd. компаниясына таандык, программалык камсыздоонун техникалык операциясы. Жана тармакка байланыштуу жабдуулар үчүн компания (мисалы: ACONU/ байланышONU/ акылдууONU/ булаONU, ж.б.) күчтүү программалык камсыздоо командасын чогултту, ар бир кардар үчүн ага муктаж болгон эксклюзивдүү талаптарды ыңгайлаштырыңыз, ошондой эле биздин өнүмдөрдүн акылдуу жана өнүккөн болушуна жол ачыңыз.



    web聊天