• Giga@hdv-tech.com
  • Хидмати онлайни 24H:
    • 7189078c
    • sns03
    • 6660e33e
    • youtube 拷贝
    • инстаграм

    C, Хондан ва навиштани ҳуҷҷат

    Вақти фиристодан: 11-уми август-2023

    Тавсиф мекунад, ки чӣ гуна барномасози C файли матнӣ ё файли бинариро эҷод, мекушояд ва мепӯшад.

    Файл маънои як қатор байтҳоро дорад, хоҳ он файли матнӣ бошад, хоҳ файли дуӣ, забони C, на танҳо дастрасӣ ба функсияҳои сатҳи болоро таъмин мекунад, балки инчунин занги асосиро (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 муайян карда шудааст

    Китобхонаи стандартии C вазифаҳои гуногунро барои хондан ва навиштани файлҳо аз рӯи аломатҳо ё ҳамчун сатри устувор таъмин менамояд.

    Ба файл нависед

    Инҳоянд соддатарин функсияҳо барои навиштани аломатҳо ба ҷараён:

    int fputc (int c, FILE *fp);

    Функсияи fputc () арзиши аломати параметри c-ро ба ҷараёни баромаде, ки fp ба он ишора мекунад, менависад. Агар навиштан бомуваффақият бошад, он аломати навишташударо бармегардонад ва агар хато рух диҳад, EOF-ро бармегардонад. Шумо метавонед функсияи зеринро барои навиштани сатри бо нул ба ҷараён хотима диҳед:

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

    Функсияи fputs () сатри s-ро ба ҷараёни баромад, ки fp ба он ишора мекунад, менависад. Агар навиштан бомуваффақият анҷом дода шавад, он арзиши ғайриманфиро бармегардонад ва агар хато рух диҳад 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); }

    Вақте ки рамзи боло тартиб дода мешавад ва иҷро мешавад, он файли нави test.txt-ро дар феҳристи / tmp эҷод мекунад. Ва бо истифода аз ду функсияи гуногун ба ду сатр менависад. Биёед минбаъд ин файлро хонем.

    Файлро хонед

    Ин соддатарин функсия барои хондани як аломат аз файл аст:

    int fgetc (FILE * fp);

    Функсияи fgetc () аломатро аз файли вурудӣ мехонад, ки fp ба он ишора мекунад. Арзиши бозгашт аломати хондан ва EOF дар сурати рух додани хато аст. Функсияи зерин ба шумо имкон медиҳад, ки сатрро аз ҷараён хонед:

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

    Функсияи fgets () аломатҳои n-1-ро аз ҷараёни вуруди аз ҷониби fp равонашуда мехонад. Он сатри хондашударо ба буфери буферӣ нусхабардорӣ мекунад ва дар охири сатр аломати нул илова мекунад.

    Агар ин функсия пеш аз хондани аломати охирин бо аломати хати шикастаи '\ 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 ", 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 () -ро занг занед, то сатри дуюмро пурра хонед.

    Функсияи бинарии I/O

    Барои вуруд ва баромади дуӣ ду функсияи зерин истифода мешаванд:

    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., як амалиёти техникии нармафзор тааллуқ дорад. Ва ширкат барои таҷҳизоти марбут ба шабака (масалан: ACОНУ/ муоширатОНУ/ доноОНУ/ нахОНУ, ва ғайра) як дастаи пуриқтидори нармафзорро ҷамъ овард, то ҳар як муштарӣ талаботи истисноии ба он эҳтиёҷдоштаро танзим кунад ва инчунин бигзоред, ки маҳсулоти мо оқилтар ва пешрафтатар бошанд.



    web聊天