παπι Δημοσ. 29 Νοεμβρίου 2015 Δημοσ. 29 Νοεμβρίου 2015 Για να το επιταχύνεις δεν κάνεις realloc σε κάθε χαρακτήρα. Βέβαια, το να μιλάμε για ταχύτητα έχει πρακτικό νόημα μόνο αν το πρόγραμμα είναι CPU bound. Που εδώ δεν είναι, είναι I/O bound γιατί περιμένεις είσοδο από το χρήστη. Το αστείο είναι πως, ο μηχανισμός που φτιαξεις θα είναι καρμπον του realloc.
defacer Δημοσ. 30 Νοεμβρίου 2015 Δημοσ. 30 Νοεμβρίου 2015 @defacer αμα ο χρηστης δώσει 700 ψηφια η fgets δεν θα κοψει το τελευταιο στον [255] και στον [256] θα θέσει το '\0'?? Επισης πως θα γινει υπερχειλιση αφου αυτος ο αριθμος δεν θα αποθηκευτεί σε μια μεταβλητή τύπου ακεραιου αλλα σε έναν πινακα χαρακτήρων συνολικού μεγέθους 257 χαρακτήρων. Παντως συνεχιζει να μου φαινεται κάπως αυτό εγω θα έβαζα ένα 9+1 το πολύ.Και όπως ειπα και πριν για μη μπλέκω με την atoi και επισης έναν πινακα που θελει έξτρα μνήμη θα έπαιζα με μια scanf μέσα στο do-while. Έχεις δίκιο, δεν ξέρω τι διάβαζα και τα έγραψα αυτά... μάλλον έβλεπα όνειρα ότι στην πρώτη είσοδο δεν κάνει fgets. Ακόμα κι έτσι πάντως νομίζω ότι το να δώσεις πολύ μεγάλη είσοδο στην atoi είναι UB οπότε πρόβλημα εξακολουθεί να υπάρχει. 1
DDevil Δημοσ. 30 Νοεμβρίου 2015 Δημοσ. 30 Νοεμβρίου 2015 Έχεις δίκιο, δεν ξέρω τι διάβαζα και τα έγραψα αυτά... μάλλον έβλεπα όνειρα ότι στην πρώτη είσοδο δεν κάνει fgets. Ακόμα κι έτσι πάντως νομίζω ότι το να δώσεις πολύ μεγάλη είσοδο στην atoi είναι UB οπότε πρόβλημα εξακολουθεί να υπάρχει. Ναι απο οτι βλέπω απο εδω http://www.eternallyconfuzzled.com/arts/jsw_art_atoi.aspx If the string does represent an integer but the integer fails to fit in the range of int, atoi silently invokes undefined behavior. No warning, no error, no recovery. Do not collect $200 and go straight to jail, your program is completely undefined from that point forward. Παντως και εδω 256 το έχει http://www.codingunit.com/c-reference-stdlib-h-function-atoi-convert-a-string-to-an-integer και εδω περνάει εναν αριθμο που υπερβαίνει τα ορια του τύπου int : http://www.tutorialspoint.com/c_standard_library/c_function_atoi.htm Απο οτι φαινεται υπάρχει UB σε αυτες τις περιπτωσεις και απλα θεωρουν σε αυτα τα παραδειγματα οτι οποιος έχει διαβασει την τεκμηριωση της συνάρτησης το γνωριζει αυτο ισως για αυτο δεν κάνουν ιδιαιτερη μνεια... θα χρησιμοποιήσω την strtol.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα