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 (ФАЙЛ *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 меңзейтін шығыс ағынына s жолын жазады. Жазу сәтті болса, ол теріс емес мәнді және қате орын алса, EOF қайтарады. Сондай-ақ, int fprintf (FILE * fp, const char * формат,...) функциясын пайдалануға болады, файлға жол жазады. Келесі мысалды қолданып көріңіз:
Ескертпе: Қол жетімді tmp каталогы бар екеніне көз жеткізіңіз, егер ол жоқ болса, алдымен оны компьютерде жасау керек.
/ tmp әдетте Linux жүйесіндегі уақытша каталог болып табылады. Егер сіз Windows жүйесінде іске қоссаңыз, оны жергілікті ортадағы бар каталогқа өзгертуіңіз керек, мысалы: C: \ tmp, D: \ tmp, т.б.
тірі үлгі
#қосу
Жоғарыдағы код құрастырылған және орындалған кезде, ол / tmp каталогында test.txt жаңа файлын жасайды. Және екі түрлі функцияны пайдаланып екі жолға жазады. Келесіде осы файлды оқиық.
Файлды оқыңыз
Төменде файлдан бір таңбаны оқудың ең қарапайым функциясы берілген:
int fgetc (FILE * fp );
fgetc () функциясы кіріс файлынан fp көрсететін таңбаны оқиды. Қайтару мәні оқу таңбасы және қате орын алса, EOF болып табылады. Келесі функция ағыннан жолды оқуға мүмкіндік береді:
char *fgets (char *buf, int n, FILE *fp);
fgets () функциясы fp арқылы бағытталған кіріс ағынынан n-1 таңбаларын оқиды. Ол оқылған жолды буфер буфіне көшіреді және жолды тоқтату үшін соңына бос таңбаны қосады.
Егер бұл функция соңғы таңбаны оқу алдында үзілген жол таңбасына немесе файл соңының EOF таңбасына тап болса, онда жол үзілімдерін қоса, оқылған таңбаларға ғана қайтарылады. Сондай-ақ файлдан жолды оқу үшін int fscanf (FILE * fp, const char * пішімі,...) функциясын пайдалануға болады, бірақ ол бірінші бос орын мен жол үзіліміне тап болған кезде оқуды тоқтатады.
тірі үлгі
#қосу
Жоғарыда келтірілген код құрастырылған және орындалған кезде, ол алдыңғы бөлімде жасалған файлдарды оқып, келесі нәтижелерді береді:
1: Бұл 2: fprintf үшін сынақтан өтуде...
3: Бұл фпуттарды сынау...
Біріншіден, fscanf() әдісі тек This оқиды.себебі ол артқы жағында бос орынға тап болады. Екіншіден, жолдың соңына дейін қалған бөлікті оқу үшін functon fgets () деп атаңыз. Соңында, екінші жолды толығымен оқу үшін fgets () деп атаңыз.
Екілік енгізу/шығару функциясы
Екілік енгізу және шығару үшін келесі екі функция пайдаланылады:
size_t fread (void *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, т.б.) қуатты бағдарламалық жасақтама командасын біріктірді, әрбір тұтынушы қажет ететін эксклюзивті талаптарды реттейді, сонымен қатар біздің өнімдерімізді ақылды және жетілдірілген етіп жасауға мүмкіндік береді.