C programatzaileak testu-fitxategi bat edo fitxategi bitar bat nola sortzen, ireki eta ixten duen deskribatzen du.
Fitxategi batek, byte sorta bat esan nahi du, testu-fitxategi bat edo fitxategi bitar bat den, C Hizkuntzak, goi-mailako funtzioetarako sarbidea ez ezik, azpiko (OS) deia ere eskaintzen du biltegiratze gailuan fitxategiak prozesatzeko. . Kapitulu honetan dokumentuen kudeaketaren deialdi garrantzitsuak azalduko dira.
ireki-fitxategia
Normalean fopen () funtzioa erabiliz fitxategi berri bat sortzeko edo lehendik dagoen fitxategi bat irekitzeko, dei honek fluxua kontrolatzeko beharrezko informazio guztia duen FILE motako objektu bat hasieratzen du. Hona hemen funtzio-dei honen prototipoa:
FILE *fopen ( const char * fitxategi-izena , const char * modua );
Hemen fitxategi-izena fitxategi bati izendatzeko kate bat da, sarbide-moduaren balioa balio hauetako bat izan daiteke:
eredua | deskribapena |
r | Ireki lehendik dagoen testu-fitxategi bat irakurtzea ahalbidetzen duena. |
w | Ireki fitxategian idazteko aukera ematen duen testu-fitxategi bat. Fitxategia existitzen ez bada, fitxategi berri bat sortzen da. Hemen, zure programak fitxategiaren hasieratik edukia idazten du. Fitxategia existitzen bada, zero luzera moztuko da eta berriro idatziko da. |
a | Ireki testu-fitxategi bat eta idatzi fitxategian eranskin moduan. Fitxategia existitzen ez bada, fitxategi berri bat sortzen da. Hemen, zure programak edukia eransten die lehendik dituzun fitxategiei. |
r+ | Ireki fitxategia irakurtzeko eta idazteko aukera ematen duen testu-fitxategi bat. |
w+ | Ireki fitxategia irakurtzeko eta idazteko aukera ematen duen testu-fitxategi bat. Fitxategia jada existitzen bada, fitxategia luzera zerora moztuko da, eta fitxategia existitzen ez bada, fitxategi berri bat sortzen da. |
a+ | Ireki fitxategia irakurtzeko eta idazteko aukera ematen duen testu-fitxategi bat. Fitxategia existitzen ez bada, fitxategi berri bat sortzen da. Irakurketa fitxategiaren hasieran hasten da, eta idazketa eranskin moduan bakarrik dago. |
Fitxategi bitarra prozesatzen bada, erabili atzitzeko modu hau goikoa ordezkatzeko:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
fitxategi itxia
Fitxategia ixteko, erabili fclose() funtzioa. Funtzioaren prototipoa hau da:
int fclose ( FITXATEGIA *fp );
- Fitxategia ongi ixten bada, fclose() funtzioak zero itzultzen du, eta erroreak EOF itzultzen badu. Funtzio honek, hain zuzen, bufferretik datuak kentzen ditu, fitxategia ixten du eta fitxategi horretarako erabilitako memoria guztia askatzen du. EOF stdio.h goiburuko fitxategian definitutako konstante bat da
C liburutegi estandarrak hainbat funtzio eskaintzen ditu fitxategiak karaktereen bidez edo luzera finkoko kate gisa irakurtzeko eta idazteko.
Idatzi fitxategira
Hona hemen korrontean karaktereak idazteko funtziorik errazenak:
int fputc ( int c , FITXATEGIA *fp );
fputc () funtzioak c parametroaren karaktere-balioa idazten du fp-k seinalatzen duen irteera-korrontean. Idazketa arrakastatsuak badira, idatzitako karakterea eta EOF itzultzen ditu erroreren bat gertatzen bada. Funtzio hau erabil dezakezu korrontean nuluarekin amaitzen den kate bat idazteko:
int fputs ( const char *s , FILE *fp );
fputs () funtzioak s katea idazten du fp-k seinalatzen duen irteerako korrontean. Idazketak arrakasta izanez gero, balio ez-negatiboa eta EOF-a itzultzen ditu erroreren bat gertatzen bada. Int fprintf funtzioa ere erabil dezakezu (FILE * fp, const char * formatua,...) fitxategian kate bat idazten du. Saiatu hurrengo adibidea:
Oharra: Ziurtatu eskuragarri tmp direktorio bat duzula, eta existitzen ez bada, zure ordenagailuan sortu behar duzu lehenik.
/ tmp Linux sistemako behin-behineko direktorioa izan ohi da. Windows sisteman exekutatzen baduzu, tokiko ingurunean existitzen den direktorio batera aldatu behar duzu, hala nola: C: \ tmp, D: \ tmp, etab.
adibide bizia
#sartu
Goiko kodea konpilatu eta exekutatzen denean, test.txt fitxategi berri bat sortzen du / tmp direktorioan. Eta bi lerrotan idazten du bi funtzio ezberdin erabiliz. Irakur dezagun hurrengo fitxategi hau.
Irakurri fitxategia
Honako hau da fitxategi bateko karaktere bakarra irakurtzeko funtziorik errazena:
int fgetc ( FITXATEGIA * fp );
fgetc () funtzioak fp-k seinalatzen duen sarrerako fitxategiko karaktere bat irakurtzen du. Itzultzeko balioa irakurritako karakterea eta EOF da erroreren bat gertatzen bada. Funtzio honek korronte bateko kate bat irakurtzeko aukera ematen du:
char *fgets ( char *buf , int n , FILE *fp );
fgets () funtzioak n-1 karaktere irakurtzen ditu fp-k zuzentzen duen sarrera-korrontetik. Irakurritako katea buffer bufferera kopiatzen du eta amaieran karaktere nulu bat eransten du katea amaitzeko.
Funtzio honek '\ n' lerro hautsien karakterea edo fitxategiaren amaierako EOF topatzen badu azken karakterea irakurri aurretik, irakurritako karaktereetara bakarrik itzuliko da, lerro-jauziak barne. Fitxategiko katea irakurtzeko int fscanf (FILE * fp, const char * formatua,...) funtzioa ere erabil dezakezu, baina irakurtzeari uzten dio lehenengo espazioa eta lerro-jauziarekin topo egitean.
adibide bizia
#sartu
Goiko kodea konpilatu eta exekutatzen denean, aurreko atalean sortutako fitxategiak irakurtzen ditu, emaitza hauek sortuz:
1: Hau 2: fprintf probatzen ari da...
3: Hau fputs probatzen ari da...
Lehenik eta behin, fscanf() metodoak hau bakarrik irakurtzen du. Atzealdean espazio bat aurkitzen duelako. Bigarrenik, deitu functon fgets () lerroaren amaiera arte gainerako zatia irakurtzeko. Azkenik, deitu fgets () bigarren errenkada guztiz irakurtzeko.
I/O funtzio bitarra
Bi funtzio hauek erabiltzen dira sarrera eta irteera bitarrean:
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 );
Bi funtzioak biltegiratze-blokeetarako irakurtzen eta idazten dira, normalean array edo egituretarako.
Goian C fitxategien irakurketa eta idazketari buruz HDV Phoelectron Technology Ltd., software-eragiketa teknikoa da. Eta sarearekin lotutako ekipamenduetarako konpainia (adibidez: ACONU/ komunikazioaONU/ inteligenteONU/ zuntzaONU, etab.) software talde indartsu bat bildu du, bezero bakoitzak behar dituen eskakizun esklusiboak pertsonalizatzeko, gure produktuak adimentsuagoak eta aurreratuagoak izan ditzan.