segmentation fault σε fread σε c

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

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

Απάντηση
helena
Δημοσιεύσεις: 5
Εγγραφή: 28 Δεκ 2009 02:21

segmentation fault σε fread σε c

Δημοσίευση από helena » 28 Δεκ 2009 02:41

Καλησπέρα και Χρόνια Πολλά,

Είμαι ένας νεός χρήστης του forum και αρχάριος προγραμματιστής.

Θα μου ήταν ιδιαίτερα χρήσιμη λίγη βοήθεια καθώς δεν μπορώ να λύσω ένα
προβλημα πoυ έχω παρά τα google search και τις μικροαλλαγές στον κώδικα.

Συναντάω segmentation fault όταν τρέχω τον κώδικα μου,έχω σημειώσει σε
ποιο σημείο γίνεται αυτό (fread) και μεχρι ποιο σημείο έτρεχε τελευταία
φορά.

Να σημείωσω ότι όταν έτρεχε δεν ετρεχα fclose γιατί και τότε εβγαζε
segmentation fault αλλά χωρίς αυτή δούλευε(υποθέτω είχε να κάνει με την
fread).

Eπισυνάπτω και το αρχείο που προσπαθώ να διαβάσω και να αποθηκεύσω με τον κώδικα.

Καθε βοήθεια καλοδεχούμενη
Συνημμένα
segfaultfread.zip
(1.25 KiB) Μεταφορτώθηκε 354 φορές

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

segmentation fault σε fread σε c

Δημοσίευση από virxen75 » 28 Δεκ 2009 09:35

το segmentation fault το προκαλούν 2 εντολές strcpy


1)strcpy(merikidiagrafi.id,string);

2)strcpy(diagrafi.id,string);

κάνε το έτσι
if (string!=NULL) strcpy(merikidiagrafi.id,string);

και
if (string!=NULL) strcpy(diagrafi.id,string);

helena
Δημοσιεύσεις: 5
Εγγραφή: 28 Δεκ 2009 02:21

segmentation fault σε fread σε c

Δημοσίευση από helena » 28 Δεκ 2009 10:04

το δοκίμασα αυτό αλλα δεν άλλαξε απολύτως τίποτα.. κολλάει στο ίδιο ακριβώς σημείο , δηλαδή στην fread.. σευχαριστώ παντως ,θα το έχω υπόψη μου για τη strcpy..

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

segmentation fault σε fread σε c

Δημοσίευση από virxen75 » 28 Δεκ 2009 10:27

τι compiler χρησιμοποιείς?

εμένα με τις αλλαγές δεν βγάζει λάθος
(σε dev c++)
Συνημμένα
s.rar
(5.58 KiB) Μεταφορτώθηκε 249 φορές

helena
Δημοσιεύσεις: 5
Εγγραφή: 28 Δεκ 2009 02:21

segmentation fault σε fread σε c

Δημοσίευση από helena » 28 Δεκ 2009 11:00

είμαι σε ubuntu και έχω τον gcc.(συνεχίζει το segmentation fault)

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

segmentation fault σε fread σε c

Δημοσίευση από virxen75 » 28 Δεκ 2009 11:28

όταν το τρέχεις μήπως σου εμφανίζει αυτό το μήνυμα?
To arxeio pontwn den anoikse
Αν ναι τότε δεν βρίσκει το αρχείο pontoi.txt που οδηγεί σε
segmentation fault

κάνε και αυτήν την αλλαγή

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

int main (){
if((stream_pontoi = fopen( "pontoi.txt", "r" ))==NULL){
    printf( " To arxeio pontwn den anoikse \n");
    exit(1);
}
  else
    printf(" To arxeio pontwn exei anoiksei \n");
έτσι ώστε όταν δεν βρίσκει το αρχείο να μην συνεχίζει

helena
Δημοσιεύσεις: 5
Εγγραφή: 28 Δεκ 2009 02:21

segmentation fault σε fread σε c

Δημοσίευση από helena » 28 Δεκ 2009 11:50

To arxeio pontwn exei anoiksei
0x804b060
Segmentation fault

--------------------------
ακριβώς τα παραπάνω βγάζει όταν το τρέχω.Οπότε ξέρω ότι κολλάει στην fread, γιατί και το αρχείο έχει ανοίξει και ο buffer δεν είναι null αλλά δεν φτάνει στην αμέσως επόμενη γραμμή που έχει printf.
:(

Δοκίμασα και άλλα αρχεία και παλι το ίδιο γίνεται.Να σημειώσω ότι δούλευε η fread και μετά για κάποιο λόγο σταμάτησε.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

segmentation fault σε fread σε c

Δημοσίευση από dva_dev » 28 Δεκ 2009 12:41

Αυτό που επιστρέφει η fread βάλε το σε μια μεταβλητή για να ξέρεις τι έχει διαβάσει.
Δίορθωσε όλα τα nulls που έχεις καρφωμένα στις strtok και ξαναπροσπάθησε.

[edit]Και πρόσθεσε και ένα τελευταίο strtok πριν κλείσεις το while που σου λείπει.[/edit]
Συνημμένα
test.tar.gz
(2.95 KiB) Μεταφορτώθηκε 247 φορές
Τελευταία επεξεργασία από το μέλος dva_dev την 28 Δεκ 2009 16:55, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

segmentation fault σε fread σε c

Δημοσίευση από virxen75 » 28 Δεκ 2009 14:04

το segmentation fault που αναφέρεις

ΔΕΝ ΕΙΝΑΙ ΣΤΗΝ fread !!!

για να το διαπιστώσεις και εσύ άλλαξε αυτό
printf("eleni");
int b;
b=feof(stream_pontoi);

σε αυτό

printf("eleni\n");
int b;
b=feof(stream_pontoi);

helena
Δημοσιεύσεις: 5
Εγγραφή: 28 Δεκ 2009 02:21

segmentation fault σε fread σε c

Δημοσίευση από helena » 28 Δεκ 2009 21:22

Σας ευχαριστώ πάρα πολύ για την άμεση βοήθεια και λύση στο πρόβλημα μου!!!
Όντως δεν έφταιγε η fread.
το test.tar.gz όντως δουλεύει!!!! :D :D :D

Απάντηση

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

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

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