ZER DAKIDAN: Fitxategiak zer diren badakit, eta fitxategi batek bere tokia hartzen duela diskoan badakit. ZER IKASIKO DUDAN: Fitxategi bat diskotik ezabatzen duen programa idatziko dut. |
Datuak gordetzen dituen fitxategi bat daukagu. Esate baterako, erregistroen fitxategi bat daukagu eta programaren helburua da diskotik fitxategia ezabatzea.
Izena ezabatzeko funtzioa remove() da eta bere dei honetan ikus daitekeen bezala, behar duen parametro bakarra katea da:
remove(sFitxIzen)
Horregatik, fitxategi bat ezabatuko duen funtzio batek ez du FILE datu-motako aldagairik beharko.
Erakusten den programa honetan jatorrizko fitxategiaren existentzia frogatzen da programa nagusian fileexists() funtzioa erabiliz, ondoren fitxategia ezabatu aurretik fitxategiaren edukia pantailaratzen da.
/* Ariketa-87_Fitxategien_12_algoritmoa: ezabatu */ // boFitxategiaExistitzenDa() funtzioa erabili da konprobazioak egiteko, // baina fitxategia ezabatzeko funtsezko funtzioa remove(sFitxIzen) da // eta remove() funtzioak katea behar duenez ez da fitxategirik irekiko. #include <stdio.h> #include <stdbool.h> // bool datu-motarako typedef char tsKate99[100]; // fitxategiaren izenerako 99 karaktere gehi null mugatzailea typedef char tsKate49[50]; // ikaslearen izena gordetzeko 49 karaktere gehi null mugatzailea typedef struct { tsKate49 sIzenDeiturak; unsigned int byDeialdia; float fNota; } trdFitxa; bool boFitxategiaExistitzenDa(const tsKate99 sFitxIzen); void FitxategiaIkusi(const tsKate99 sFitxIzen); void FitxategiaEzabatu(const tsKate99 sFitxIzen); int main() { tsKate99 sFitxIzen = "C:\\Tokia\\Fitxak_.dat"; printf("'%s' fitxategiarekin lan egingo dugu.\n", sFitxIzen); if (boFitxategiaExistitzenDa(sFitxIzen)) { FitxategiaIkusi(sFitxIzen); FitxategiaEzabatu(sFitxIzen); printf("'%s' fitxategia existitzen da? ERANTZUNA ---> %s\n", sFitxIzen, boFitxategiaExistitzenDa(sFitxIzen) ? "BAI" : "EZ"); } else printf("'%s' fitxategia ez da existitzen.\n", sFitxIzen); printf("\nRETURN sakatu programa bukatzeko\n"); getchar(); return 0; } // fitxategiaren edukia bistaratzeko void FitxategiaIkusi(const tsKate99 sFitxIzen) { FILE *fFitxategia; trdFitxa rdElem; long int liPosizioa; fFitxategia = fopen(sFitxIzen, "rb"); if (!fFitxategia) { printf("Ezin da fitxategia ireki\n"); return; } printf("'%s' fitxategiaren edukia:\n", sFitxIzen); liPosizioa = 0; while (fread(&rdElem, sizeof(trdFitxa), 1, fFitxategia) == 1) { printf("%2ld posizioan %-15s %8d %10.2f\n", liPosizioa, rdElem.sIzenDeiturak, rdElem.byDeialdia, rdElem.fNota); liPosizioa++; } printf("\n"); fclose(fFitxategia); } void FitxategiaEzabatu(const tsKate99 sFitxIzen) { if (remove(sFitxIzen) == 0) printf("'%s' fitxategia ezabatu da.\n", sFitxIzen); else printf("Errorea '%s' ezabatzerakoan.\n", sFitxIzen); } bool boFitxategiaExistitzenDa(const tsKate99 sFitxIzen) { FILE *file = fopen(sFitxIzen, "rb"); if (file) { fclose(file); return true; } return false; }
iruzkinik ez:
Argitaratu iruzkina