Xdanger Δημοσ. 18 Οκτωβρίου 2004 Δημοσ. 18 Οκτωβρίου 2004 Έχω δύο μεταβλητες char* var1; char* var2; και περνάω τους πρώτους 10 χαρακτήρες της var1 στην var2 1oς Τρόπος ~~~~~~~~~~ strncpy(var2,var1,10); 2oς Tρόπος ~~~~~~~~~~ var2 = var1; var2[10] = '\0'; To πρόβλημά μου είναι ότι (και στους δύο τρόπους) όταν αλάζει η δέυτερη μεταβλητή(var2) αυτόματα αλάζει και η πρώτη (var1). Μήπως ξέρετε κάποιον τρόπο να κρατήσω σταθερή την πρώτη μεταβλητή (var1) όταν αλλάζει τιμή η δεύτερη Ευχαριστώ πολύ.
nobody Δημοσ. 18 Οκτωβρίου 2004 Δημοσ. 18 Οκτωβρίου 2004 Με τον δεύτερο τρόπο εννοείται ότι αλλάζει και η πρώτη γιατί πλέον και οι δυο μεταβλητές δείχνουν στο ίδιο string. Τώρα για τον πρώτο τρόπο, εγώ το έτρεξα χωρίς πρόβλημα.
Directx Δημοσ. 19 Οκτωβρίου 2004 Δημοσ. 19 Οκτωβρίου 2004 Πρέπει να ορίσεις στους δυο δείκτες (pointers) σου (*var1,*var2) διαφορετικά κομμάτια μνήμης για τα στοιχεία που περιέχουν. Μιας λοιπόν και δουλεύεις σε C++ δοκίμασε: > var1 = new char[255]; // 255 => γενικά το μέγεθος του string που θες var2 = new char[255]; strcpy(var1,"123456789ABCDEF"); strncpy(var2,var1,10); printf(" Original Var1: %s\n",var1); printf(" STRNCPY Var2: %s\n",var2); strcpy(var1,"-"); printf(" Original Var1: %s\n",var1); printf(" STRNCPY Var2: %s\n",var2); delete var1; delete var2; Υ.Γ. Βέβαια ελπίζω να κατάλαβα σωστά την ερώτηση σου..
Xdanger Δημοσ. 19 Οκτωβρίου 2004 Μέλος Δημοσ. 19 Οκτωβρίου 2004 Σας ευχαριστώ και τους δύο να είστε καλα.
DeepFloyd Δημοσ. 30 Μαρτίου 2005 Δημοσ. 30 Μαρτίου 2005 Έχω ένα πρόβλημα στη c++ με τα strings και είπα να μην ανοίξω νέο θέμα.. Μπορεί καποιος να βοηθήσει? Λοιπον: Έχω ενα αρχείο με χαρακτήρες και ψηφία. Πώς μπορώ να περάσω σε int μεταβλητή κάποιο από τα ψηφία του αρχείου? Επίσης, έχοντας κάνει getline(fin, line) και έχοντας μια γραμμή ως string στη μεταβλητη line, μπορώ με κάποιο τρόπο ένα χαρακτήρα της που είναι ψηφίο να τον κάνω int? Ευχαριστώ για το χρόνο σας..
gerontas Δημοσ. 30 Μαρτίου 2005 Δημοσ. 30 Μαρτίου 2005 έχοντας μια γραμμή ως string στη μεταβλητη line' date=' μπορώ με κάποιο τρόπο ένα χαρακτήρα της που είναι ψηφίο να τον κάνω int? Ευχαριστώ για το χρόνο σας..[/quote']ι Τα περισσότερα c περιβάλλοντα (χρόνια έχω να δω κάποιο να ξεφεύγει) εμπεριέχουν τη συνάρτηση isdigit© που επιστρέφει non-zero (true) αν το c είναι ψηφίο μεταξύ 0 και 9, διαφορετικά επιστρέφει 0 (false). (Το header της συνάρτησης στο ctype.h). Από κεί και πέρα αν το c είναι ψηφίο, η ακέραια τιμή c είναι [ψηφίο + 48] ή αλλιώς [ψηφίο + '0'] αφού ο ASCII του '0' ισούται με 48. Συνεπώς η αριθμητική τιμή val_c που ζητάς θα είναι c-'0'. (Το c φυσικά μπορείς να το απομονώσεις σε ένα for, είτε σαν lin (με αρχ. τιμή i=0), είτε σαν *p (όπου p, pointer σε χαρακτήρα με αρχική τιμή lin). Αν σε μπέρδεψα, η ώρα φταίει, μη διστάσεις να επανέλθεις.
DeepFloyd Δημοσ. 31 Μαρτίου 2005 Δημοσ. 31 Μαρτίου 2005 Φίλε μου μπήκα στο φόρουμ απόψε για να γράψω ότι τη βρήκα την άκρη, ψάχνοντας στον πίνακα ASCII!! Επίσης για να πω ότι η διατύπωσή μου δεν ήταν και η καλύτερη! Ευχαριστώ πάρα πολύ πάντως για την απάντηση και τη βοήθεια! Να 'σαι καλά!! Υ.Γ: Η λύση που είχα ανακαλύψει ήταν ακριβώς ίδια με τη δική σου: Πάρνω το χαρακτήρα και τον "κάνω" -48, και έτσι παίρνω το int του!! Και πάλι ευχαριστώ!! (Επανέρχομαι με νέες απορίες σε λίγο!!!)
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.