mariosk89 Δημοσ. 23 Νοεμβρίου 2009 Δημοσ. 23 Νοεμβρίου 2009 έχω ένα char * της μορφής "2,5,7,8,0," και θέλω μέσω της atoi να πάρω αυτά τα νούμερα και να τα βάλω σε ένα πίνακα με int. πως μπορώ να το κάνω αυτό? θέλει ειδική μεταχείρηση σε αυτή την περίπτωση η atoi?
pinball_elf Δημοσ. 23 Νοεμβρίου 2009 Δημοσ. 23 Νοεμβρίου 2009 Με μία for loop μετατρέποντας έναν έναν τους χαρακτήρες. Διότι αλλιώς αν πασάρεις το char * όπως είναι στην atoi θα σου επιστέψει το μηδέν (0).
vamitrou Δημοσ. 23 Νοεμβρίου 2009 Δημοσ. 23 Νοεμβρίου 2009 Eίναι λίγο πιο πολύπλοκο νομίζω. Αν το δώσεις ολόκληρο θα έχεις εναν int της μορφής 25780. Ξεχωριστά κάθε χαρακτήρα δεν μπορείς να τον βάλεις σαν όρισμα στην atoi. Η atoi θέλει σαν όρισμα εναν const char*. Δες αυτό θα σε διαφωτίσει σε αυτό που θέλεις να κάνεις αλλά χωρίς τη βοήθεια του atoi. http://bytes.com/topic/c/answers/60431-dereferencing-char-array-int-array
parsifal Δημοσ. 24 Νοεμβρίου 2009 Δημοσ. 24 Νοεμβρίου 2009 Αν τα strings είναι προβλέψιμα (έχουν πάντα την ίδια μορφή όπως αυτή που έδωσες στο opening post), μπορείς και με την sscanf πολύ εύκολα!
virxen75 Δημοσ. 24 Νοεμβρίου 2009 Δημοσ. 24 Νοεμβρίου 2009 δεν ξέρω αν κάτι τέτοιο σε βολεύει > #include <stdio.h> int main(){ char *values="23697"; int pin[5];//5=length("23697") for (int i=0;i<5;i++) pin[i]=(int)(values[i]-'0'); for (int i=0;i<5;i++) printf(" %d ",pin[i]); getchar(); return 0; } Υ.Γ. έλεγχοι δεν γίνονται για τα ψηφία προσάρμοσε το στις ανάγκες σου
bab1s Δημοσ. 24 Νοεμβρίου 2009 Δημοσ. 24 Νοεμβρίου 2009 Μπορείς να δουλέψεις και με την strtok() που βρίσκεται στο string.h Είναι μια συνάρτηση για να χωρίζει ένα αρχικό string σε κομμάτια με βάση μια λίστα από separators. Θα σου επιστρέφει κάθε φορά την πληροφορία που θες (τους αριθμούς στην περίπτωση σου) για να την κάνεις ό,τι θες (να τους περάσεις από την atoi). Δες εδώ ένα παράδειγμα για το πως δουλέυει http://www.opengroup.org/onlinepubs/000095399/functions/strtok.html
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.