Advertisement
Guest User

Untitled

a guest
Jul 7th, 2011
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.02 KB | None | 0 0
  1. /*
  2. file.txt:
  3. ---------
  4. NebulaIII uranerc 400 33 43.6 3.4
  5. Syrius plutonium 500 85.4 53 40
  6. Vulcan ragogumi 300 62 34 98
  7. Fold terfogatnoveloszer 200 640 321 103
  8.  
  9. */
  10.  
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13.  
  14. /* A táblázat egy sorának struktúrája ("a cellák") */
  15. struct AROW {
  16.     char value1[20];
  17.     char value2[20];
  18.     float value3;
  19.     float value4;
  20.     float value5;
  21.     float value6;
  22. };
  23.  
  24. struct AROW **table; //A táblázat - 2 dimenziós dinamikus tömb
  25.  
  26. void main () {
  27.     int row = 0; //Sorok száma
  28.     int retval; //A file egy sorának beolvasáskor visszaadott érték.
  29.     int i;
  30.     static const char filename[] = "file.txt"; //A megnyitandó állomány neve
  31.    
  32.     FILE *file = fopen (filename, "r"); //Fájl megnyitása olvasásra
  33.     /* Ha sikerült megnyitni */
  34.     if (file != NULL) {
  35.         table = (struct AROW **) realloc(table, (row+1) * sizeof(struct AROW *)); //Táblázat memóriában való helyfoglalásának frissítése
  36.         table[row] = (struct AROW *) malloc(sizeof(struct AROW)); //A táblázat egy sorának memóriában való helyfoglalása
  37.         retval = fscanf (file,"%s %s %f %f %f %f", table[row]->value1, table[row]->value2, &table[row]->value3, &table[row]->value4, &table[row]->value5, &table[row]->value6 ); //Egy sor beolvasása
  38.         row++;
  39.         //Újabb sorokat olvasunk be addig, míg az állomány végéhez érünk
  40.         while (retval != EOF) {
  41.             table = (struct AROW **) realloc(table, (row+1) * sizeof(struct AROW *));
  42.             table[row] = (struct AROW *) malloc(sizeof(struct AROW));
  43.             retval = fscanf (file,"%s %s %f %f %f %f", table[row]->value1, table[row]->value2, &table[row]->value3, &table[row]->value4, &table[row]->value5, &table[row]->value6 );
  44.             row++;
  45.         }
  46.         fclose (file);
  47.     /* Ha nem sikerült megnyitni */
  48.     } else {
  49.         printf ("Hiba az állomány megnyitásakor !\n");
  50.     }
  51.    
  52.     /* Kiíratás */
  53.     for (i=0; i<(row-1); i++) {
  54.         printf ("%s %s %f %f %f %f\n", table[i]->value1, table[i]->value2, table[i]->value3, table[i]->value4, table[i]->value5, table[i]->value6 );
  55.     }
  56.    
  57.     free (table); //Memória felszabadítása
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement