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