C και .txt files

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: Super-Moderators, WebDev Moderators

Απάντηση
gegounaris
Δημοσιεύσεις: 2
Εγγραφή: 21 Σεπ 2005 23:43
Τοποθεσία: Amaliada- Hrakleio

C και .txt files

Δημοσίευση από gegounaris » 30 Ιουν 2007 04:21

καλημέρα...
εδώ και καιρό προσπαθώ να βρω λύση σε κάτι, όποιος μπορεί να βοηθήσει, ευπρόσδεκτος!
έχω ένα .txt αρχείο το οποίο έχει κάμποσες γραμμές και εγώ θέλω να διαβάζω μόνο την τελευταία γραμμή κάθε φορά. Πώς μπορώ να το πετύχω αυτό? έχω δοκιμάσει διάφορα.

η τελευταία γραμμή που θέλω να να διαβάζω έχει τη μορφή
25042007 1830 0,3 0,3 0,3 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 20,301 20,505 20,386 0,059 0,0 0,0 0,0 0,0 0,0 2,564 0,206 0,217 15,0 15,0 15,0 0,0

Εκτός των 2 πρώτων τιμών οι υπόλοιπες είναι float, πώς μπορώ να την περάσω σε ένα πίνακα?

puppetmaster
Δημοσιεύσεις: 11
Εγγραφή: 13 Ιούλ 2007 17:14

C και .txt files

Δημοσίευση από puppetmaster » 16 Ιούλ 2007 18:47

ένας πίνακας(array) είναι ένα σύνολο μεταβλητών του ίδιου τύπου. Γι'αυτό και μπορείς να ορίσεις τον τύπο του (int, float .....).

Επομένως καταλαβαίνεις ότι ο πίνακας δεν μπορεί να σου χρησιμέυσει σε κάτι.

Η συμβουλή μου είναι να χρησιμοποιήσεις ένα union ή μία structure.

Όσο για το να διαβάσεις την τελευταία γραμμή δεν θα σου πω τον ακριβή κώδικα αλλά
ψάξε τον χαρακτήρα EOF και ξεκίνα να διαβάζεις χαρακτήρες αντίστροφα μέχρι να
βρεις τον πρώτο χαρακτήρα αλλαγής γραμμής. (/n) :wink:

Ελπίζω να σε βοήθησα....
το ninjitsu είναι σαν το σουβλάκι!
αξίζει ότι είναι απο μέσα!
-Δάσκαλος Σοφ-

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

C και .txt files

Δημοσίευση από soteres2002 » 17 Ιούλ 2007 05:49

episis, mia alli texniki einai na anoikseis me append mode to arxeio i antistoixa na koinitheis me fseek() sto -1. meta, efoson oi grammes einai fixed length, boreis kai pali me fseek() na kinitheis N bytes piso sto stream kai na kaneis fscanf().

enalaktika, boreis na kaneis explode oles tis grammes theorontas to \n i to \r\n os diaxoristi protipou, kai na kaneis ena strok() gemizontas etsi enan dinamiko pinaka (malloc(), realloc() and friends). an meta xriazesai kai epeksergasia ton allon grammon, auto einai mia kali lisi arkei prota na breis ton aritho ton \n i \r\n auksimeno kata 1 (ena \n i \r\n ftiaxnei 2 grammes)

auto einai ligo friki, kati allo p miazei me tin lisi p protathike pio pano einai aplos na breis to teleutaio index tou karaktira \n i \r\n mesa sto keimeno kai na kaneis ena austirko fseek(). meta kaneis kanonika fscanf(). mallon to kalitero p boreis na kaneis.

dld kati tis logikis

Κώδικας: Επιλογή όλων

char *str = "bla bla bla";
int index = 0, index_internal = 0;

while(*str != '\0') {
   if(*str == '\n' || *str == '\r\n')
         index = index_internal;

   str++;
   index_internal++;
}
auto boreis na to prosomioseis sti logiki me arxeia.

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες