Δημοσιεύτηκε: 11 Αύγ 2011, 18:55
migf1 έγραψε:Το error στο βγάζει γιατί τον *pointer τον ορίζεις δείκτη σε int αλλά του εκχωρείς διεύθυνση char (το s[0] είναι char, άρα το &s[0] είναι διεύθυνση από char).
Σε ότι αφορά το κώδικα, το 'χεις πιάσει το γενικό νόημα αλλά με κάποιες ελλείψεις. Π.χ. δεν χρειάζεται να ελέγχεις για '\n' στη συνθήκη του while. Ο χαρακτήρας που σηματοδοτεί το τέλος ενός string είναι ο '\0'. Άρα είναι απόλυτα θεμιτό να υπάρχουν '\n' χαρακτήρες μέσα σε ένα string (π.χ. μπορεί να περιέχει τα περιεχόμενα ενός text editor, άρα θα υπάρχουν πολλοί '\n' μέσα στο string, για τις αλλαγές των γραμμών).
Επίσης, οι συναρτήσεις επιστρέφουν το μήκος του string μετρώντας και τον μηδενικό χαρακτήρα στο τέλος, ενώ η εκφώνηση επισημαίνει πως δεν πρέπει να τον συμπεριλαμβάνουν στο αποτέλεσμα που επιστρέφουν (όπως ακριβώς δεν τον συμπεριλαμβάνει η κανονική strlen).
Και τέλος, δεν είναι σοφή πρακτική να ονοματίζεις τις συναρτήσεις σου με ονόματα στάνταρ συναρτήσεων. Σου άλλαξα τον κώδικά σου (δες παρακάτω)... μένει να τον φτιάξεις να μην συμπεριλαμβάνει τον μηδενικό χαρακτήρα στο μήκος που επιστρέφει.Spoiler: show
Αν δεν ασχοληθεί άλλος να δώσω κι εγώ τις λύσεις, γιατί διαφέρουν από τις λύσεις του φίλου Σταματίου.
Ναι αλλά κανονικά δεν θα μπορούσα να το κάνω και int αφού ουσιαστικά τα chars είναι ints με βάση το ASCI table;
Επίσης έκανα τις συναρτήσεις να μην μετρούν το \n επειδή πχ έγραφα abc και έβγαζε 4 γι' αυτό είπα να το αφήσω να μετρά μικρά κομμάτια κειμένου