Όσο ο φίλος Star_Light ετοιμαστεί (και μέχρι να ξανα-πλακώσει δουλειά εδώ) ας γράψω μερικά πραγματάκια ακόμα στο θέμα μας, χωρίς να ξεφεύγω.
Όπως ίσως έγινε αντιληπτό, η διαχείριση των strings με μετρητές στην πλειοψηφία των περιπτώσεων είναι πολύ πιο εύκολη και κυρίως πολύ λιγότερο επιρρεπής σε λάθη απροσεξίας. Και στην πραγματικότητα δεν υπάρχει κανένα πλεονέκτημα στη διαχείρισή τους με δείκτες, ειδικά αν στο compilation ενεργοποιήσουμε το optimization που έτσι κι αλλιώς τα μετατρέπει σε δείκτες (-Ο, -Ο2 και -O3 στον gcc).
Είναι όμως πολύτιμοι στην διαδικασία εκμάθησης, γιατί μέσω αυτών ξεκαθαρίζει πως δουλεύουν πραγματικά τα πράγματα, κάτι που με τους μετρητές δεν είναι και τόσο προφανές. Όταν προγραμματίζετε πράματα που θέλετε να τα διαθέσετε δημόσια ή να τα πουλήσετε, να χρησιμοποιείτε ΠΑΝΤΑ όποιον κώδικα καταλαβαίνετε καλύτερα, γιατί έτσι μειώνετε σημαντικά τις πιθανότητες να υποπέσετε σε λάθη απροσεξίας, τα μπορεί να μην φανούν αμέσως και να "σκάσουν" όταν πλέον είναι πολύ αργά (δηλαδή όταν χρησιμοποιήσει το πρόγραμμα ο πελάτης μας).
Είτε με δείκτες είτε με μετρητές, ΠΑΝΤΑ να δοκιμάζετε τις συναρτήσεις που φτιάχνετε με όσο το δυνατόν περισσότερα test-cases και μάλιστα έξυπνα επιλεγμένα test-cases για να μη χάνετε πολύτιμο χρόνο. π.χ. με τον τρόπο που γράψαμε αυτή τη συνάρτηση (που δεν χρησιμοποιούμε κάποια μέγιστη τιμή πλήθους χαρακτήρων για να σταματήσουμε το while-loop) τότε, αν δουλεύει σωστά με το test-case:
- Κώδικας: Επιλογή όλων
char s1[] = "a", s2[] = "ab";
δεν υπάρχει κανένας λόγος να το τεστάρουμε και με τα...
- Κώδικας: Επιλογή όλων
char s1[] = "ab", s2[] = "abc";
char s1[] = abc", s2[] = "abcd";
κλπ
Για τον τρόπος που είναι γραμμένος ο κώδικάς μας όλα τα παραπάνω είναι ουσιαστικά 1 και μόνο test-case

Επίσης, είναι καλό να γνωρίζετε πως σε γενικές γραμμές τα for-loops (κυρίως με μετρητές αλλά και χωρίς αυτούς) είναι πολύ λιγότερο επιρρεπή σε λάθη απροσεξίας συγκριτικά με τα while και τα do, διότι λόγω της φύσης τους σε ωθούν να αρχικοποιήσεις, να ελέγξεις και να αυξήσεις/μειώσεις τις μεταβλητές ελέγχου, control variables (μετρητές, δείκτες, κλπ) συγκεντρωμένα σε ένα μέρος, στην 1η γραμμή του for-loop... και άρα είναι πολύ πιο εύκολο να τα τεστάρεις με το μάτι γρήγορα.