Апісвае, як праграміст на C стварае, адкрывае і закрывае тэкставы файл або двайковы файл.
Файл азначае шэраг байтаў, няхай гэта будзе тэкставы або двайковы файл, мова C не толькі забяспечвае доступ да функцый верхняга ўзроўню, але таксама забяспечвае асноўны выклік (АС) для апрацоўкі файлаў на прыладзе захоўвання дадзеных. . У гэтай главе будуць растлумачаны важныя выклікі ў кіраванні дакументамі.
адкрыты файл
Звычайна пры выкарыстанні функцыі fopen () для стварэння новага файла або адкрыцця існуючага файла гэты выклік ініцыялізуе аб'ект тыпу FILE, які змяшчае ўсю неабходную інфармацыю для кіравання патокам. Вось прататып выкліку гэтай функцыі:
ФАЙЛ *fopen ( const char * імя файла, const char * mode );
Тут імя файла - гэта радок для назвы файла, значэннем рэжыму доступу можа быць адно з наступных значэнняў:
ўзор | апісанне |
r | Адкрыйце існуючы тэкставы файл, які дазваляе яго чытаць. |
w | Адкрыйце тэкставы файл, які дазваляе запісваць у файл. Калі файл не існуе, ствараецца новы файл. Тут ваша праграма запісвае змесціва з пачатку файла. Калі файл існуе, ён будзе скарочаны да нулявой даўжыні і перапісаны. |
a | Адкрыйце тэкставы файл і запішыце ў файл у рэжыме дадання. Калі файл не існуе, ствараецца новы файл. Тут ваша праграма дадае кантэнт да файлаў, якія ў вас ужо ёсць. |
r+ | Адкрыйце тэкставы файл, які дазваляе чытаць і пісаць у файл. |
w+ | Адкрыйце тэкставы файл, які дазваляе чытаць і пісаць у файл. Калі файл ужо існуе, файл скарачаецца да нулявой даўжыні, а калі файл не існуе, ствараецца новы файл. |
a+ | Адкрыйце тэкставы файл, які дазваляе чытаць і пісаць у файл. Калі файл не існуе, ствараецца новы файл. Чытанне пачынаецца з пачатку файла, а запіс адбываецца толькі ў рэжыме дадання. |
Калі апрацоўваецца бінарны файл, выкарыстоўвайце наступны рэжым доступу, каб замяніць прыведзены вышэй:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
закрыты файл
Каб закрыць файл, выкарыстоўвайце функцыю fclose(). Прататып функцыі выглядае наступным чынам:
int fclose (ФАЙЛ *fp);
- Калі файл закрыты паспяхова, функцыя fclose() вяртае нуль, а калі памылка, вяртае EOF. Фактычна гэтая функцыя выдаляе дадзеныя з буфера, закрывае файл і вызваляе ўсю памяць, якая выкарыстоўваецца для гэтага файла. EOF - гэта канстанта, вызначаная ў файле загалоўкаў stdio.h
Стандартная бібліятэка C забяспечвае розныя функцыі для чытання і запісу файлаў па сімвалах або ў выглядзе радка фіксаванай даўжыні.
Запісаць у файл
Вось самыя простыя функцыі для запісу сімвалаў у паток:
int fputc ( int c , ФАЙЛ *fp );
Функцыя fputc () запісвае сімвальнае значэнне параметра c у паток вываду, на які паказвае fp. Калі запісы паспяховыя, ён вяртае запісаны сімвал і EOF, калі ўзнікае памылка. Вы можаце выкарыстоўваць наступную функцыю, каб запісаць у паток радок, які заканчваецца нулем:
int fputs ( const char *s , FILE *fp );
Функцыя fputs () запісвае радок s у паток вываду, куды паказвае fp. Калі запіс удаецца, ён вяртае неадмоўнае значэнне і EOF, калі ўзнікае памылка. Вы таксама можаце выкарыстоўваць функцыю int fprintf (FILE * fp, const char * format,...) запісвае радок у файл. Паспрабуйце наступны прыклад:
Заўвага: пераканайцеся, што ў вас ёсць даступны каталог tmp, і калі ён не існуе, вам трэба спачатку стварыць яго на вашым кампутары.
/ tmp звычайна з'яўляецца часовым каталогам у сістэме Linux. Калі вы працуеце ў сістэме Windows, вам трэба змяніць яго ў існуючы каталог у лакальным асяроддзі, напрыклад: C: \ tmp, D: \ tmp і г.д.
жывы прыклад
#уключыць
Калі прыведзены вышэй код скампіляваны і выкананы, ён стварае новы файл test.txt у каталогу / tmp. І запісвае ў два радкі, выкарыстоўваючы дзве розныя функцыі. Давайце прачытаем гэты файл далей.
Прачытайце файл
Ніжэй прыведзена самая простая функцыя для чытання аднаго сімвала з файла:
int fgetc ( ФАЙЛ * fp );
Функцыя fgetc () счытвае сімвал з уваходнага файла, на які паказвае fp. Значэнне, якое вяртаецца, - гэта прачытаны сімвал і EOF, калі ўзнікае памылка. Наступная функцыя дазваляе вам чытаць радок з патоку:
char *fgets ( char *buf , int n , FILE *fp );
Функцыя fgets () счытвае n-1 сімвалаў з уваходнага патоку, які накіроўваецца fp. Ён капіюе прачытаны радок у буфер buf і дадае нулявы сімвал у канцы, каб завяршыць радок.
Калі гэтая функцыя сустракае сімвал ломанага радка '\ n' або EOF канца файла перад чытаннем апошняга сімвала, то вяртаецца толькі да сімвалаў чытання, уключаючы разрывы радкоў. Вы таксама можаце выкарыстоўваць функцыю int fscanf (FILE * fp, const char * format,...) для чытання радка з файла, але яна спыняе чытанне, калі сустракае першы прабел і разрыў радка.
жывы прыклад
#уключыць
Калі прыведзены вышэй код скампіляваны і выкананы, ён счытвае файлы, створаныя ў папярэднім раздзеле, што дае наступныя вынікі:
1: Гэта 2: тэставанне для fprintf...
3: Гэта тэставанне для fputs...
Па-першае, метад fscanf() чытае толькі This .because ён сустракае прабел ззаду. Па-другое, выклічце функцыю fgets (), каб прачытаць пакінутую частку да канца радка. Нарэшце, выклічце fgets (), каб цалкам прачытаць другі радок.
Функцыя двайковага ўводу-вываду
Наступныя дзве функцыі выкарыстоўваюцца для двайковага ўводу і вываду:
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 Ltd., тэхнічнаму аператару праграмнага забеспячэння. І кампанія для сеткавага абсталявання (напрыклад, ACАНУ/ зносіныАНУ/ разумныАНУ/ абалонінаАНУ, і г.д.) аб'яднала магутную каманду праграмнага забеспячэння, каб кожны кліент наладзіў эксклюзіўныя патрабаванні, якія маюць патрэбу ў гэтым, а таксама каб нашы прадукты былі больш разумнымі і прасунутымі.