Δημοσιεύτηκε: 16 Ιουν 2012, 15:03
από migf1
stamatiou έγραψε:
...
Επίσης τώρα προσπαθώ να φτιάξω ένα πρόγραμμα όπου κάποιος θα μπορεί να έχει κάτι σαν τράπεζα και να φτιάχνει λογιαριασμούς κλπ. Αλλά για κάποιο λόγο μου βγάζει seg fault.
...
το σφάλμα είναι στη γραμμή 42 στη lowercase_str αν και την έχω ελέγξει και στο άλλο project :/

Το πρόβλημα είναι πως με την lowercase() προσπαθείς να αλλάξεις τους χαρακτήρες ενός string-literal (συγκεκριμένα του "Surname"). Τρως seg-fault επειδή τα string-literals είναι read-only memory.

Αν χρησιμοποιήσεις κανονικά strings για το όνομα και το επώνυμο θα δουλέψει...

Μορφοποιημένος Κώδικας: Επιλογή όλων
...
char name[] = "Name";
char surname[] = "Surname";

initialize();

add_person(name, surname);
if ( search_person(surname) )
printf("Success!\n");
...


Άσχετα με το seg-fault, η υλοποίηση που κάνεις στην lowercase() υπολογίζει την strlen(str) σε κάθε επανάληψη του loop, με αποτέλεσμα ο κώδικάς σου να τρέχει πάρα πολύ αργά.

ΥΓ. Προσωπικά έχω σταματήσει να κοιτάω τους κώδικες που ποστάρεις Γιώργο γιατί δεν φροντίζεις να τους έχεις ευανάγνωστους (με σχόλια, με κενές γραμμές μεταξύ λογικών ενοτήτων, με γραμμές διαχωρισμού μεταξύ των συναρτήσεων, κλπ). Για μένα αυτό παίζει το 1ο ρόλο για το αν θα κοιτάξω έναν κώδικα ή όχι.