Advertisement
imarosi

File-ból betűk olvasása

Mar 6th, 2017
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.93 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define N 15        // sorok száma
  5. #define M 20        // betűk száma soronként
  6.  
  7. int main()
  8. {
  9.     char fogl[N][M];
  10.  
  11.     FILE *f=fopen("foglaltsag.txt","r");
  12.  
  13.     int sor=0, osz=0;
  14.     int kar;
  15.     while ((kar = fgetc(f)) != EOF) {
  16.         if (kar == '\n') {
  17.             sor++;      // kovetkező sor
  18.             osz = 0;    // első karaktere jön majd
  19.         } else {
  20.             fogl[sor][osz] = (char)kar;
  21.             osz++;
  22.         }
  23.     }
  24.  
  25.     fclose(f);          // nem kell már a file, lezárjuk
  26.  
  27.     for (sor = 0; sor < N; sor++) {
  28.         for (osz = 0; osz < M; osz++) {
  29.             printf("%c",fogl[sor][osz]);
  30.         }
  31.         printf("\n");
  32.     }
  33.  
  34.     return 0;
  35. }
  36.  
  37. ///////////////////////////////////// MÁSIK VERZIÓ //////////////////////////////////
  38.  
  39. #include <stdio.h>
  40. #include <stdlib.h>
  41.  
  42. #define N 15        // sorok száma
  43. #define M 20        // betűk száma soronként
  44.  
  45. #define SORHOSSZ M+3    // a memóriában van még sorvégjel (2 byte) és lezáró 0 is
  46. // Valójában még ennél is hoszabb puffert lenne érdemes lefoglalni, hátha valamelyik sor
  47. // hosszabb lenne. De nincs hibakezelés aprogramban, szóval ilyen hossz problémákra se készülünk fel.
  48.  
  49. int main()
  50. {
  51.     char fogl[N][M];            // az x és o jelek tömbje
  52.     char egysor[SORHOSSZ];      // egyetlen sor a file-ból
  53.  
  54.     FILE *f=fopen("foglaltsag.txt","r");
  55.  
  56.     int sor=0, osz=0;
  57.     // mindaddig, amíg van újabb sor a file-ban, beolvassuk a teljes sort:
  58.     while (fgets(egysor, SORHOSSZ, f)) {
  59.         // a sorban o vagy x lehet csak
  60.         for (osz=0; egysor[osz] == 'o' || egysor[osz] == 'x'; osz++) {
  61.             fogl[sor][osz] = egysor[osz];   // átteszük a végleges helyére
  62.         }
  63.         sor++;          // továbblépünk a következő sorra a fogl tömbben
  64.     }
  65.  
  66.     fclose(f);          // nem kell már a file, lezárjuk
  67.  
  68.     for (sor = 0; sor < N; sor++) {
  69.         for (osz = 0; osz < M; osz++) {
  70.             printf("%c",fogl[sor][osz]);
  71.         }
  72.         printf("\n");
  73.     }
  74.  
  75.     return 0;
  76. }
  77.  
  78. ///////////////////////////////////// HARMADIK VERZIÓ //////////////////////////////////
  79.  
  80. #include <stdio.h>
  81. #include <stdlib.h>
  82.  
  83. #define N 15        // sorok száma
  84. #define M 20        // betűk száma soronként
  85.  
  86. int main()
  87. {
  88.     char fogl[N][M];
  89.  
  90.     FILE *f=fopen("foglaltsag.txt","r");
  91.  
  92.     int sor=0, osz=0;
  93.     while (!feof(f)) {
  94.         char kar;
  95.         fscanf(f, "%c", &kar);  // beolvassuk a file-ból a következő karaktert
  96.         // aztán elemezzük, hogy mi jött
  97.         if (kar == '\n') {
  98.             // ha sorvég karakter jött, továbblépünk a következő sorra:
  99.             sor++;      // kovetkező sor
  100.             osz = 0;    // első karaktere jön majd
  101.         } else {
  102.             // nehogy más is legyen a file-ban, csak az x meg az o az, amit lerakunk
  103.             if (kar == 'x' || kar == 'o') {
  104.                 fogl[sor][osz] = kar;
  105.                 osz++;
  106.             }
  107.         }
  108.     }
  109.  
  110.     fclose(f);          // nem kell már a file, lezárjuk
  111.  
  112.     for (sor = 0; sor < N; sor++) {
  113.         for (osz = 0; osz < M; osz++) {
  114.             printf("%c",fogl[sor][osz]);
  115.         }
  116.         printf("\n");
  117.     }
  118.  
  119.     return 0;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement