Βοηθεια για C  Το θέμα επιλύθηκε

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Βοηθεια για C

Δημοσίευσηαπό maenolis » 23 Μάιος 2013, 16:12

Θα σε συμβούλευα να αρχίσεις να διαβάζεις από κάποιο βιβλίο αντί να βρίσκεις και να κόβεις-ράβεις κομμάτια κώδικα που βρήκες όπου όπου.
Η fscanf εδώ περιγράφεται τέλεια.
Δηλαδή το string που θα διαβάσεις πρέπει να το περάσεις σε στοιχείο της λίστας και μετά με την σειρά του να εισαχθεί μέσα στην λίστα στην υλοποίηση που δίνεις.
Γενικά αν μου επιτρέπεται έχεις πάρα πολλά κενά και κάνεις κάτι προχωρημένο για το γνωσιακό επίπεδο στο οποίο είσαι.
Μια λύση για την έως τώρα δομή της άσκησης τώρα είναι να φτιάξεις έναν buffer και να καταχωρείς το αρχείο στο στοιχείο της λίστας σου με strcpy δηλαδή:
Μορφοποιημένος Κώδικας: Επιλογή όλων
char myBuffer[20];
while (fscanf(file1,"%19s",myBuffer)!=EOF){
strcpy(s.word, myBuffer);
Tree_eisagogi(&tree,s,&error);
i++;
}


Η fscanf θέλεις να διαβάσει 19 χαρακτήρες και όχι 20 γιατί στο τέλος του myBuffer θα βάλεις τον χαρακτήρα '\0' .
1 Γνώσεις → Linux: Αρχάριος ┃ Προγραμματισμός: c,c++,sql,html,css ┃ Αγγλικά: Μέτριος
2 Λειτουργικό →Dual boot Ubuntu 12.04 64-bit (en_US.UTF-8) & Windows 7 Professional 64-bit
3 Προδιαγραφές → Intel® Core™ i3-2330M CPU @ 2.20GHz × 4 ‖ RAM 7.7 Gb
4 Κάρτες γραφικών: Intel® HD3000
5 Σκληρός Δίσκος: → OCZ Vertex4 Sata III 128Gb
Άβαταρ μέλους
maenolis
punkTUX
punkTUX
 
Δημοσιεύσεις: 261
Εγγραφή: 12 Μάιος 2011, 09:56
Τοποθεσία: Ν.Κόσμος
Εκτύπωση

Re: Βοηθεια για C

Δημοσίευσηαπό ertyuiopos » 23 Μάιος 2013, 22:38

maenolis έγραψε:Θα σε συμβούλευα να αρχίσεις να διαβάζεις από κάποιο βιβλίο αντί να βρίσκεις και να κόβεις-ράβεις κομμάτια κώδικα που βρήκες όπου όπου.
Η fscanf εδώ περιγράφεται τέλεια.
Δηλαδή το string που θα διαβάσεις πρέπει να το περάσεις σε στοιχείο της λίστας και μετά με την σειρά του να εισαχθεί μέσα στην λίστα στην υλοποίηση που δίνεις.
Γενικά αν μου επιτρέπεται έχεις πάρα πολλά κενά και κάνεις κάτι προχωρημένο για το γνωσιακό επίπεδο στο οποίο είσαι.
Μια λύση για την έως τώρα δομή της άσκησης τώρα είναι να φτιάξεις έναν buffer και να καταχωρείς το αρχείο στο στοιχείο της λίστας σου με strcpy δηλαδή:
Μορφοποιημένος Κώδικας: Επιλογή όλων
char myBuffer[20];
while (fscanf(file1,"%19s",myBuffer)!=EOF){
strcpy(s.word, myBuffer);
Tree_eisagogi(&tree,s,&error);
i++;
}


Η fscanf θέλεις να διαβάσει 19 χαρακτήρες και όχι 20 γιατί στο τέλος του myBuffer θα βάλεις τον χαρακτήρα '\0' .


Σε ευχαριστω πολυ για την βοηθεια λειτουργησε αλλα υπαρχει ενα θεμα μ περνει μονο το ενα στοιχειο απο το αρχειο οχι τα αλλα...τα αλλα δεν μπενουν στο δεντρο.. γιατι? εβαλα μια printf( " %s \n " , tree); μεσα στην επαναοληψη και μ εβγαζε την πρωτη λεξη του αρχειου συνεχεια...το ξερω οτι ειναι κατι πολυ προχωρημενο αλλα ειναι εργασια και γενικα το μαθημα δεν ειναι ετσι απλως ο καθηγητης το κανει τοσο δυσκολο :/


Βασικα το βρηκα!! σε ευχαριστω πολυ με εκανες και ξεκολησα απο καπου π με ταλαιπωρουσε για μερες..(τελικα η χαρα του προγραμματιστη οταν λειτουργει το προγραμμα του ειναι τεραστια :P :D)
ertyuiopos
babeTUX
babeTUX
 
Δημοσιεύσεις: 11
Εγγραφή: 22 Μάιος 2013, 20:19
Εκτύπωση

Re: Βοηθεια για C

Δημοσίευσηαπό maenolis » 24 Μάιος 2013, 15:37

Αν νομίζεις ότι λύθηκε το θέμα σου τσέκαρε το να φαίνεται επιλυμένο.
Μορφοποιημένος Κώδικας: Επιλογή όλων
/*λάθος!*/
printf("%s\n", tree)


Διάβαζε τα man pages των συναρτήσεων που χρησιμοποιείς. Απ' όσα έχεις γράψει αρκετά είναι μεγάλα λάθη. Δηλαδή καλείς βασικές συναρτήσεις εντελώς λάθος.
1 Γνώσεις → Linux: Αρχάριος ┃ Προγραμματισμός: c,c++,sql,html,css ┃ Αγγλικά: Μέτριος
2 Λειτουργικό →Dual boot Ubuntu 12.04 64-bit (en_US.UTF-8) & Windows 7 Professional 64-bit
3 Προδιαγραφές → Intel® Core™ i3-2330M CPU @ 2.20GHz × 4 ‖ RAM 7.7 Gb
4 Κάρτες γραφικών: Intel® HD3000
5 Σκληρός Δίσκος: → OCZ Vertex4 Sata III 128Gb
Άβαταρ μέλους
maenolis
punkTUX
punkTUX
 
Δημοσιεύσεις: 261
Εγγραφή: 12 Μάιος 2011, 09:56
Τοποθεσία: Ν.Κόσμος
Εκτύπωση

Προηγούμενη

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι