tanszek:oktatas:szamitastechnika:fajlkezeles
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| tanszek:oktatas:szamitastechnika:fajlkezeles [2025/10/29 08:31] – szabom | tanszek:oktatas:szamitastechnika:fajlkezeles [2025/10/29 08:42] (current) – [Gyakorlás] szabom | ||
|---|---|---|---|
| Line 12: | Line 12: | ||
| Módok: | Módok: | ||
| - | | Mód | Jelentés | + | | Mód |
| - | | ------ | --------------------------------------------- | + | | `" |
| - | | `" | + | | `" |
| - | | `" | + | | `" |
| - | | `" | + | | `" |
| - | | `" | + | | `" |
| - | | `" | + | | `" |
| - | | `" | + | |
| **Fájl lezárása (fclose)** | **Fájl lezárása (fclose)** | ||
| Line 28: | Line 27: | ||
| **Szöveges fájl olvasása/ | **Szöveges fájl olvasása/ | ||
| - | | Művelet | + | | Művelet |
| - | | ---------------- | ----------- | --------------------------------- | + | | Írás |
| - | | Írás | + | | Olvasás |
| - | | Olvasás | + | | Karakter írás |
| - | | Karakter írás | + | | Karakter olvasás |
| - | | Karakter olvasás | `fgetc()` | + | |
| Line 52: | 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 < | ||
| + | |||
| + | int main() { | ||
| + | FILE *fp = fopen(" | ||
| + | if (fp == NULL) { | ||
| + | printf(" | ||
| + | return 1; | ||
| + | } | ||
| + | |||
| + | fprintf(fp, "Ez az elso sor.\n" | ||
| + | fprintf(fp, "Ez a masodik sor.\n" | ||
| + | fclose(fp); | ||
| + | printf(" | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 2.Fájl olvasása és képernyőre írása | ||
| + | <sxh c> | ||
| + | #include < | ||
| + | |||
| + | int main() { | ||
| + | FILE *fp = fopen(" | ||
| + | char sor[100]; | ||
| + | |||
| + | if (fp == NULL) { | ||
| + | printf(" | ||
| + | return 1; | ||
| + | } | ||
| + | |||
| + | while (fgets(sor, 100, fp) != NULL) | ||
| + | printf(" | ||
| + | |||
| + | fclose(fp); | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 3. Karakterenkénti másolás | ||
| + | <sxh c> | ||
| + | #include < | ||
| + | |||
| + | int main() { | ||
| + | FILE *in = fopen(" | ||
| + | FILE *out = fopen(" | ||
| + | char ch; | ||
| + | |||
| + | if (in == NULL || out == NULL) { | ||
| + | printf(" | ||
| + | return 1; | ||
| + | } | ||
| + | |||
| + | while ((ch = fgetc(in)) != EOF) | ||
| + | fputc(ch, out); | ||
| + | |||
| + | fclose(in); | ||
| + | fclose(out); | ||
| + | printf(" | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 4. Számok beírása fájlba | ||
| + | <sxh c> | ||
| + | #include < | ||
| + | |||
| + | int main() { | ||
| + | FILE *fp = fopen(" | ||
| + | int i; | ||
| + | for (i = 1; i <= 10; i++) | ||
| + | fprintf(fp, " | ||
| + | fclose(fp); | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 5. Számok beolvasása és összegzés | ||
| + | <sxh c> | ||
| + | #include < | ||
| + | |||
| + | int main() { | ||
| + | FILE *fp = fopen(" | ||
| + | int szam, osszeg = 0; | ||
| + | |||
| + | while (fscanf(fp, " | ||
| + | osszeg += szam; | ||
| + | |||
| + | fclose(fp); | ||
| + | printf(" | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 6. Bináris írás és olvasás | ||
| + | <sxh c> | ||
| + | #include < | ||
| + | |||
| + | int main() { | ||
| + | int tomb[5] = {10, 20, 30, 40, 50}; | ||
| + | int beolvasott[5]; | ||
| + | int i; | ||
| + | |||
| + | FILE *fp = fopen(" | ||
| + | fwrite(tomb, | ||
| + | fclose(fp); | ||
| + | |||
| + | fp = fopen(" | ||
| + | fread(beolvasott, | ||
| + | fclose(fp); | ||
| + | |||
| + | for (i = 0; i < 5; i++) | ||
| + | printf(" | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 7. Struktúra fájlba mentése (szöveges) | ||
| + | <sxh c> | ||
| + | #include < | ||
| + | |||
| + | typedef struct { | ||
| + | char nev[30]; | ||
| + | int kor; | ||
| + | } Szemely; | ||
| + | |||
| + | int main() { | ||
| + | Szemely ember = {" | ||
| + | |||
| + | FILE *fp = fopen(" | ||
| + | fprintf(fp, "%s %d\n", ember.nev, ember.kor); | ||
| + | fclose(fp); | ||
| + | |||
| + | printf(" | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 8. Struktúra olvasása fájlból | ||
| + | <sxh c> | ||
| + | #include < | ||
| + | |||
| + | typedef struct { | ||
| + | char nev[30]; | ||
| + | int kor; | ||
| + | } Szemely; | ||
| + | |||
| + | int main() { | ||
| + | Szemely ember; | ||
| + | FILE *fp = fopen(" | ||
| + | fscanf(fp, "%s %d", ember.nev, & | ||
| + | fclose(fp); | ||
| + | printf(" | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 9. Struktúra és mátrix fájlban | ||
| + | <sxh c> | ||
| + | #include < | ||
| + | |||
| + | #define N 2 | ||
| + | #define M 2 | ||
| + | |||
| + | typedef struct { | ||
| + | char nev[30]; | ||
| + | int pontok[N][M]; | ||
| + | } Jatekos; | ||
| + | |||
| + | int main() { | ||
| + | Jatekos j = {" | ||
| + | FILE *fp = fopen(" | ||
| + | |||
| + | fprintf(fp, " | ||
| + | for (int i = 0; i < N; i++) { | ||
| + | for (int k = 0; k < M; k++) | ||
| + | fprintf(fp, "%d ", j.pontok[i][k]); | ||
| + | fprintf(fp, " | ||
| + | } | ||
| + | fclose(fp); | ||
| + | printf(" | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 10. Egyszerű adatbázis fájlban (szöveges) | ||
| + | <sxh c> | ||
| + | #include < | ||
| + | |||
| + | #define N 3 | ||
| + | |||
| + | typedef struct { | ||
| + | char nev[30]; | ||
| + | int kor; | ||
| + | } Diak; | ||
| + | |||
| + | int main() { | ||
| + | Diak diakok[N] = { | ||
| + | {" | ||
| + | {" | ||
| + | {" | ||
| + | }; | ||
| + | |||
| + | FILE *fp = fopen(" | ||
| + | int i; | ||
| + | for (i = 0; i < N; i++) | ||
| + | fprintf(fp, "%s %d\n", diakok[i].nev, | ||
| + | fclose(fp); | ||
| + | |||
| + | printf(" | ||
| + | |||
| + | // visszaolvasás | ||
| + | fp = fopen(" | ||
| + | printf(" | ||
| + | for (i = 0; i < N; i++) { | ||
| + | fscanf(fp, "%s %d", diakok[i].nev, | ||
| + | printf(" | ||
| + | } | ||
| + | fclose(fp); | ||
| + | |||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 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 < | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | #define N 10 | ||
| + | |||
| + | typedef struct { | ||
| + | char nev[30]; | ||
| + | int pont; | ||
| + | char kat; | ||
| + | } Diak; | ||
| + | |||
| + | int main() { | ||
| + | Diak diakok[N] = { | ||
| + | {" | ||
| + | {" | ||
| + | }; | ||
| + | |||
| + | srand(time(NULL)); | ||
| + | |||
| + | FILE *fp = fopen(" | ||
| + | int i; | ||
| + | for (i = 0; i < N; i++) { | ||
| + | diakok[i].pont = rand() % 101; | ||
| + | |||
| + | if (diakok[i].pont >= 90) diakok[i].kat = ' | ||
| + | else if (diakok[i].pont >= 75) diakok[i].kat = ' | ||
| + | else if (diakok[i].pont >= 60) diakok[i].kat = ' | ||
| + | else if (diakok[i].pont >= 40) diakok[i].kat = ' | ||
| + | else diakok[i].kat = ' | ||
| + | |||
| + | fprintf(fp, "%s %d %c\n", diakok[i].nev, | ||
| + | } | ||
| + | |||
| + | fclose(fp); | ||
| + | printf(" | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 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 < | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | #define N 7 | ||
| + | |||
| + | typedef struct { | ||
| + | char nap[10]; | ||
| + | int homerseklet; | ||
| + | } HetNap; | ||
| + | |||
| + | int main() { | ||
| + | HetNap het[N] = { | ||
| + | {" | ||
| + | {" | ||
| + | }; | ||
| + | |||
| + | srand(time(NULL)); | ||
| + | FILE *fp = fopen(" | ||
| + | |||
| + | 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(" | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 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 < | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | #define N 3 | ||
| + | #define M 3 | ||
| + | |||
| + | typedef struct { | ||
| + | char nev[30]; | ||
| + | int pont[M]; | ||
| + | float atlag; | ||
| + | } Hallgato; | ||
| + | |||
| + | int main() { | ||
| + | Hallgato hallgatok[N] = { | ||
| + | {" | ||
| + | }; | ||
| + | |||
| + | srand(time(NULL)); | ||
| + | FILE *fp = fopen(" | ||
| + | |||
| + | 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", | ||
| + | } | ||
| + | |||
| + | fclose(fp); | ||
| + | printf(" | ||
| + | return 0; | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | 14. 5 oktató → 4 kurzus mindegyiknél, | ||
| + | * A: 85–100 | ||
| + | * B: 70–84 | ||
| + | * C: 55–69 | ||
| + | * D: 40–54 | ||
| + | * F: < 40 | ||
| + | Minden oktató nevét, kurzuspontjait, | ||
| + | <sxh c> | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | #define N 5 | ||
| + | #define M 4 | ||
| + | |||
| + | typedef struct { | ||
| + | char nev[30]; | ||
| + | int pontok[M]; | ||
| + | float atlag; | ||
| + | char kat; | ||
| + | } Oktato; | ||
| + | |||
| + | int main() { | ||
| + | Oktato oktatok[N] = { | ||
| + | {" | ||
| + | }; | ||
| + | |||
| + | srand(time(NULL)); | ||
| + | FILE *fp = fopen(" | ||
| + | |||
| + | 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 = ' | ||
| + | else if (oktatok[i].atlag >= 70) oktatok[i].kat = ' | ||
| + | else if (oktatok[i].atlag >= 55) oktatok[i].kat = ' | ||
| + | else if (oktatok[i].atlag >= 40) oktatok[i].kat = ' | ||
| + | else oktatok[i].kat = ' | ||
| + | |||
| + | fprintf(fp, "%s ", oktatok[i].nev); | ||
| + | for (j = 0; j < M; j++) | ||
| + | fprintf(fp, "%d ", oktatok[i].pontok[j]); | ||
| + | fprintf(fp, " | ||
| + | } | ||
| + | |||
| + | fclose(fp); | ||
| + | printf(" | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
tanszek/oktatas/szamitastechnika/fajlkezeles.1761726702.txt.gz · Last modified: 2025/10/29 08:31 by szabom
