User Tools

Site Tools


tanszek:oktatas:szamitastechnika:fajlkezeles

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tanszek:oktatas:szamitastechnika:fajlkezeles [2025/10/29 08:32] – [Table] szabomtanszek:oktatas:szamitastechnika:fajlkezeles [2025/10/29 08:42] (current) – [Gyakorlás] szabom
Line 27: Line 27:
 **Szöveges fájl olvasása/írása** **Szöveges fájl olvasása/írása**
  
-| Művelet          | Függvény    | Példa                             | +| Művelet           | Függvény     | Példa                              
-| ---------------- | ----------- | --------------------------------- +| Írás              | `fprintf()`  | `fprintf(fp, "%d %s", kor, nev); 
-| Írás             | `fprintf()` | `fprintf(fp, "%d %s", kor, nev);` | +| Olvasás           | `fscanf()`   | `fscanf(fp, "%d %s", &kor, nev); 
-| Olvasás          | `fscanf()`  | `fscanf(fp, "%d %s", &kor, nev);` | +| Karakter írás     | `fputc()`    | `fputc('A', fp);`                  
-| Karakter írás    | `fputc()`   | `fputc('A', fp);`                 +| Karakter olvasás  | `fgetc()`    | `ch = fgetc(fp);                 |
-| Karakter olvasás | `fgetc()`   | `ch = fgetc(fp);                |+
  
  
Line 51: Line 50:
   * Rossz formátum a fscanf()-ben   * Rossz formátum a fscanf()-ben
  
 +=====Gyakorlás=====
  
 +1. Írj programot, ami létrehoz egy fájlt, és beleír pár sort.
 +<sxh c>
 +#include <stdio.h>
 +
 +int main() {
 +    FILE *fp = fopen("szoveg.txt", "w");
 +    if (fp == NULL) {
 +        printf("Hiba: nem sikerult megnyitni a fajlt!\n");
 +        return 1;
 +    }
 +
 +    fprintf(fp, "Ez az elso sor.\n");
 +    fprintf(fp, "Ez a masodik sor.\n");
 +    fclose(fp);
 +    printf("Fajl sikeresen letrehozva.\n");
 +    return 0;
 +}
 +</sxh>
 +
 +2.Fájl olvasása és képernyőre írása
 +<sxh c>
 +#include <stdio.h>
 +
 +int main() {
 +    FILE *fp = fopen("szoveg.txt", "r");
 +    char sor[100];
 +
 +    if (fp == NULL) {
 +        printf("Nem sikerult megnyitni a fajlt!\n");
 +        return 1;
 +    }
 +
 +    while (fgets(sor, 100, fp) != NULL)
 +        printf("%s", sor);
 +
 +    fclose(fp);
 +    return 0;
 +}
 +</sxh>
 + 
 +3. Karakterenkénti másolás
 +<sxh c>
 +#include <stdio.h>
 +
 +int main() {
 +    FILE *in = fopen("bemenet.txt", "r");
 +    FILE *out = fopen("kimenet.txt", "w");
 +    char ch;
 +
 +    if (in == NULL || out == NULL) {
 +        printf("Hiba fajl megnyitasakor!\n");
 +        return 1;
 +    }
 +
 +    while ((ch = fgetc(in)) != EOF)
 +        fputc(ch, out);
 +
 +    fclose(in);
 +    fclose(out);
 +    printf("Masolas kesz.\n");
 +    return 0;
 +}
 +</sxh>
 +
 +4. Számok beírása fájlba
 +<sxh c>
 +#include <stdio.h>
 +
 +int main() {
 +    FILE *fp = fopen("szamok.txt", "w");
 +    int i;
 +    for (i = 1; i <= 10; i++)
 +        fprintf(fp, "%d\n", i);
 +    fclose(fp);
 +    return 0;
 +}
 +</sxh>
 +
 +5. Számok beolvasása és összegzés
 +<sxh c>
 +#include <stdio.h>
 +
 +int main() {
 +    FILE *fp = fopen("szamok.txt", "r");
 +    int szam, osszeg = 0;
 +
 +    while (fscanf(fp, "%d", &szam) == 1)
 +        osszeg += szam;
 +
 +    fclose(fp);
 +    printf("Osszeg: %d\n", osszeg);
 +    return 0;
 +}
 +</sxh>
 +
 +6. Bináris írás és olvasás
 +<sxh c>
 +#include <stdio.h>
 +
 +int main() {
 +    int tomb[5] = {10, 20, 30, 40, 50};
 +    int beolvasott[5];
 +    int i;
 +
 +    FILE *fp = fopen("adat.bin", "wb");
 +    fwrite(tomb, sizeof(int), 5, fp);
 +    fclose(fp);
 +
 +    fp = fopen("adat.bin", "rb");
 +    fread(beolvasott, sizeof(int), 5, fp);
 +    fclose(fp);
 +
 +    for (i = 0; i < 5; i++)
 +        printf("%d ", beolvasott[i]);
 +    return 0;
 +}
 +</sxh>
 +
 +7. Struktúra fájlba mentése (szöveges)
 +<sxh c>
 +#include <stdio.h>
 +
 +typedef struct {
 +    char nev[30];
 +    int kor;
 +} Szemely;
 +
 +int main() {
 +    Szemely ember = {"Kovacs Bela", 32};
 +
 +    FILE *fp = fopen("ember.txt", "w");
 +    fprintf(fp, "%s %d\n", ember.nev, ember.kor);
 +    fclose(fp);
 +
 +    printf("Ember adatai mentve.\n");
 +    return 0;
 +}
 +</sxh>
 +
 +8. Struktúra olvasása fájlból
 +<sxh c>
 +#include <stdio.h>
 +
 +typedef struct {
 +    char nev[30];
 +    int kor;
 +} Szemely;
 +
 +int main() {
 +    Szemely ember;
 +    FILE *fp = fopen("ember.txt", "r");
 +    fscanf(fp, "%s %d", ember.nev, &ember.kor);
 +    fclose(fp);
 +    printf("%s (%d ev)\n", ember.nev, ember.kor);
 +    return 0;
 +}
 +</sxh>
 +
 +9. Struktúra és mátrix fájlban
 +<sxh c>
 +#include <stdio.h>
 +
 +#define N 2
 +#define M 2
 +
 +typedef struct {
 +    char nev[30];
 +    int pontok[N][M];
 +} Jatekos;
 +
 +int main() {
 +    Jatekos j = {"Anna", {{1,2},{3,4}}};
 +    FILE *fp = fopen("jatekos.txt", "w");
 +
 +    fprintf(fp, "%s\n", j.nev);
 +    for (int i = 0; i < N; i++) {
 +        for (int k = 0; k < M; k++)
 +            fprintf(fp, "%d ", j.pontok[i][k]);
 +        fprintf(fp, "\n");
 +    }
 +    fclose(fp);
 +    printf("Jatekos adatai mentve.\n");
 +    return 0;
 +}
 +</sxh>
 +
 +10. Egyszerű adatbázis fájlban (szöveges)
 +<sxh c>
 +#include <stdio.h>
 +
 +#define N 3
 +
 +typedef struct {
 +    char nev[30];
 +    int kor;
 +} Diak;
 +
 +int main() {
 +    Diak diakok[N] = {
 +        {"Anna", 18},
 +        {"Bela", 19},
 +        {"Csilla", 17}
 +    };
 +
 +    FILE *fp = fopen("adatbazis.txt", "w");
 +    int i;
 +    for (i = 0; i < N; i++)
 +        fprintf(fp, "%s %d\n", diakok[i].nev, diakok[i].kor);
 +    fclose(fp);
 +
 +    printf("Adatbazis mentve.\n");
 +
 +    // visszaolvasás
 +    fp = fopen("adatbazis.txt", "r");
 +    printf("\n--- Beolvasott adatok ---\n");
 +    for (i = 0; i < N; i++) {
 +        fscanf(fp, "%s %d", diakok[i].nev, &diakok[i].kor);
 +        printf("%s (%d ev)\n", diakok[i].nev, diakok[i].kor);
 +    }
 +    fclose(fp);
 +
 +    return 0;
 +}
 +</sxh>
 +
 +11. 10 diák kap egy 0–100 közötti pontszámot. A pont alapján kategóriát kap:
 +  - A: 90–100
 +  - B: 75–89
 +  - C: 60–74
 +  - D: 40–59
 +  - F: 0–39
 +
 +Ezeket az adatokat fájlba kell írni.
 +<sxh c>
 +#include <stdio.h>
 +#include <stdlib.h>
 +#include <time.h>
 +
 +#define N 10
 +
 +typedef struct {
 +    char nev[30];
 +    int pont;
 +    char kat;
 +} Diak;
 +
 +int main() {
 +    Diak diakok[N] = {
 +        {"Anna"}, {"Bela"}, {"Csilla"}, {"David"}, {"Erika"},
 +        {"Ferenc"}, {"Gabor"}, {"Hanna"}, {"Istvan"}, {"Judit"}
 +    };
 +
 +    srand(time(NULL));
 +
 +    FILE *fp = fopen("diakok.txt", "w");
 +    int i;
 +    for (i = 0; i < N; i++) {
 +        diakok[i].pont = rand() % 101;
 +
 +        if (diakok[i].pont >= 90) diakok[i].kat = 'A';
 +        else if (diakok[i].pont >= 75) diakok[i].kat = 'B';
 +        else if (diakok[i].pont >= 60) diakok[i].kat = 'C';
 +        else if (diakok[i].pont >= 40) diakok[i].kat = 'D';
 +        else diakok[i].kat = 'F';
 +
 +        fprintf(fp, "%s %d %c\n", diakok[i].nev, diakok[i].pont, diakok[i].kat);
 +    }
 +
 +    fclose(fp);
 +    printf("Adatok kiirva a diakok.txt fajlba.\n");
 +    return 0;
 +}
 +</sxh>
 +
 +12. Tárolj 7 napi hőmérsékletet egy struktúrában (napok neve + random -10 és 35 °C között). Írd fájlba a táblázatot.
 +<sxh c>
 +#include <stdio.h>
 +#include <stdlib.h>
 +#include <time.h>
 +
 +#define N 7
 +
 +typedef struct {
 +    char nap[10];
 +    int homerseklet;
 +} HetNap;
 +
 +int main() {
 +    HetNap het[N] = {
 +        {"Hetfo"}, {"Kedd"}, {"Szerda"}, {"Csutortok"},
 +        {"Pentek"}, {"Szombat"}, {"Vasarnap"}
 +    };
 +
 +    srand(time(NULL));
 +    FILE *fp = fopen("homerseklet.txt", "w");
 +
 +    int i;
 +    for (i = 0; i < N; i++) {
 +        het[i].homerseklet = (rand() % 46) - 10;
 +        fprintf(fp, "%s %d\n", het[i].nap, het[i].homerseklet);
 +    }
 +
 +    fclose(fp);
 +    printf("Homersekletek kiirva fajlba.\n");
 +    return 0;
 +}
 +</sxh>
 +
 +13. Tárolj 3 hallgatót, mindegyik 3 vizsgát írt. Generálj véletlen pontokat (0–100) egy 3×3 mátrixba, számítsd ki az átlagukat, és írd fájlba.
 +<sxh c>
 +#include <stdio.h>
 +#include <stdlib.h>
 +#include <time.h>
 +
 +#define N 3
 +#define M 3
 +
 +typedef struct {
 +    char nev[30];
 +    int pont[M];
 +    float atlag;
 +} Hallgato;
 +
 +int main() {
 +    Hallgato hallgatok[N] = {
 +        {"Anna"}, {"Bela"}, {"Csilla"}
 +    };
 +
 +    srand(time(NULL));
 +    FILE *fp = fopen("vizsga.txt", "w");
 +
 +    int i, j;
 +    for (i = 0; i < N; i++) {
 +        int osszeg = 0;
 +        for (j = 0; j < M; j++) {
 +            hallgatok[i].pont[j] = rand() % 101;
 +            osszeg += hallgatok[i].pont[j];
 +        }
 +        hallgatok[i].atlag = (float)osszeg / M;
 +        fprintf(fp, "%s ", hallgatok[i].nev);
 +        for (j = 0; j < M; j++)
 +            fprintf(fp, "%d ", hallgatok[i].pont[j]);
 +        fprintf(fp, "-> %.2f\n", hallgatok[i].atlag);
 +    }
 +
 +    fclose(fp);
 +    printf("Vizsgaadatok fajlba mentve.\n");
 +    return 0;
 +}
 +
 +</sxh>
 +
 +14. 5 oktató → 4 kurzus mindegyiknél, random pontszám 0–100. Átlag alapján kategória:
 +  *  A: 85–100
 +  *  B: 70–84
 +  *  C: 55–69
 +  *  D: 40–54
 +  *  F: < 40 
 +Minden oktató nevét, kurzuspontjait, átlagát és kategóriáját írd a fájlba.
 +<sxh c>
 +#include <stdio.h>
 +#include <stdlib.h>
 +#include <time.h>
 +
 +#define N 5
 +#define M 4
 +
 +typedef struct {
 +    char nev[30];
 +    int pontok[M];
 +    float atlag;
 +    char kat;
 +} Oktato;
 +
 +int main() {
 +    Oktato oktatok[N] = {
 +        {"Kovacs"}, {"Toth"}, {"Nagy"}, {"Varga"}, {"Horvath"}
 +    };
 +
 +    srand(time(NULL));
 +    FILE *fp = fopen("kurzusok.txt", "w");
 +
 +    int i, j;
 +    for (i = 0; i < N; i++) {
 +        int osszeg = 0;
 +        for (j = 0; j < M; j++) {
 +            oktatok[i].pontok[j] = rand() % 101;
 +            osszeg += oktatok[i].pontok[j];
 +        }
 +        oktatok[i].atlag = (float)osszeg / M;
 +
 +        if (oktatok[i].atlag >= 85) oktatok[i].kat = 'A';
 +        else if (oktatok[i].atlag >= 70) oktatok[i].kat = 'B';
 +        else if (oktatok[i].atlag >= 55) oktatok[i].kat = 'C';
 +        else if (oktatok[i].atlag >= 40) oktatok[i].kat = 'D';
 +        else oktatok[i].kat = 'F';
 +
 +        fprintf(fp, "%s ", oktatok[i].nev);
 +        for (j = 0; j < M; j++)
 +            fprintf(fp, "%d ", oktatok[i].pontok[j]);
 +        fprintf(fp, "Atlag: %.1f Kat: %c\n", oktatok[i].atlag, oktatok[i].kat);
 +    }
 +
 +    fclose(fp);
 +    printf("Oktatoi pontok es kategoriak mentve fajlba.\n");
 +    return 0;
 +}
 +</sxh>
  
tanszek/oktatas/szamitastechnika/fajlkezeles.1761726727.txt.gz · Last modified: 2025/10/29 08:32 by szabom