Δημοσιεύτηκε: 06 Ιουν 2011, 11:34
από migf1
Εύκολος τρόπος δεν υπάρχει στη C, μπορείς όμως να το κάνεις όπως σου υπέδειξε ο φίλος simosx παραπάνω, δεσμεύοντας μνήμη δυναμικά όποτε τη χρειάζεσαι.

Πιο συγκεκριμένα, μια υλοποίηση θα μπορούσε να είναι με τη χρήση μιας συνδεδεμένης λίστας χαρακτήρων (linked list) όπου θα διαβάζεις από το πληκτρολόγιο χαρακτήρες π.χ. με το getchar() και για τον καθένα τους θα δημιουργείς και θα προσθέτεις έναν νέο κόμβο (node) στο τέλος της λίστα σου. Αντί για απλή λίστα μπορείς να χρησιμοποιήσεις διπλή λίστα (double linked list), στοίβα (stack), ουρά (queue) ή οποιαδήποτε άλλη δομή δεδομένων, ανάλογα με τις ανάγκες του προγράμματός σου στη διαχείριση του string αυτού.

medigeek έγραψε:Ναι αυτό το γνωρίζω, το πρόβλημα με το scanf είναι ότι σταματάει στο πρώτο space χαρακτήρα. Άσε που περιορίζεται σε συγκεκριμένο αριθμό χαρακτήρων πριν το compile.

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


Είναι υποθετική περίπτωση, δεν το χρειάζομαι προσωπικά ούτε για δουλειά, απλά με ενδιαφέρει αν γίνεται να υπάρχει κάτι το ίδιο με αυτό στο python: να δέχεται input χαρακτήρες επ' απειρον (απειρο εννοώ μέχρι σ'ένα σημείο, λόγω μνήμης ή όπως είπες στο μέγιστο αριθμό χαρακτήρων που επιτρέπει το MAX_LENGTH του τερματικού).

Δηλαδή το size_t θα δημιουργήσει πρόβλημα;