eirinikp Δημοσ. 8 Μαρτίου 2008 Μέλος Δημοσ. 8 Μαρτίου 2008 Έχω μία ακόμα ερωτησούλα: Πρέπει να υλοποιήσω τη συνάρτηση char* function( const char *a ); Οι τύποι των ορισμάτων και του output δεν επιτρέπεται να αλλάξουν. Δηλαδή τα const μένουν εκεί που είναι. Μέσα στη συνάρτηση έχω το εξής: > char* function( const char *a ) { char *output_str; int i = 3; output_str = a + i; return output_str; } Δηλαδή επιστρέφει ένα char* που δείχνει σε κάποια άλλη θέση του input. (Ας υποθέσουμε ότι όλα είναι "καλώς ορισμένα") Όμως δεν μπορώ να κάνω ανάθεση από το a+i στο output_str επειδή το ένα είναι const και το άλλο όχι. Ο compiler λεει"warning: assignment discards qualifiers from pointer target type". Εμένα το μόνο που με νοιάζει είναι να δείχνει το output_str στη συγκεκριμένη θέση. Πώς μπορώ να το λύσω?
bokarinho Δημοσ. 8 Μαρτίου 2008 Δημοσ. 8 Μαρτίου 2008 Για τσέκαρε με αυτή τη συνάρτηση: > char *Function(const char *pszStr, int pszPosition) { /* Error Checking. */ if(!pszStr) { printf("Error: NULL string.\n"); return NULL; } if(pszPosition < 0 || pszPosition > (int)strlen(pszStr)) { printf("Error:%s\n", pszPosition < 0 ? "Invalid negative index number.\n" : "Invalid index greater than string length.\n"); return NULL; } /* Return Value. */ return (char*)&pszStr[pszPosition]; } Να προσέχεις με τα const γιατί αυτά είναι το πρόβλημα στην συνάρτηση σου. Λέγοντας ότι ένας char* ptr είναι ίσος με ένα const char* ptr τότε υπάρχει πρόβλημα γιατί ο compiler οφείλει να σε προειδοποιήσει ότι δεν μπορείς να αλλάξεις τον const δείκτη μέσω του non const δείκτη. Πρέπει να κάνεις και τον output const για να μην έχεις πρόβλημα.
eirinikp Δημοσ. 8 Μαρτίου 2008 Μέλος Δημοσ. 8 Μαρτίου 2008 return (char*)&pszStr[pszPosition]; Αυτό κρατάω από όσα έγραψες. Ευχαριστώ πολύ! Όλα τα υπόλοιπα δεν χρειαζόταν να τα γράψεις γιατί για να μην παιδεύεστε είχα πει ότι υποθέτουμε ότι όλα είναι "καλώς ορισμένα"! (Δε φτάνει που μου απαντάς, να κάθεσαι να γράφεις και όλους τους ελέγχους κρίμα!) Ευχαριστώ και πάλι!
myle Δημοσ. 9 Μαρτίου 2008 Δημοσ. 9 Μαρτίου 2008 Πάντως αυτά τα "περιττά" που έγραψε ο bokarinho είναι που σε σώζουν πολλές φορές και κάνουν το πρόγραμμα σου όντως καλό.
eirinikp Δημοσ. 9 Μαρτίου 2008 Μέλος Δημοσ. 9 Μαρτίου 2008 A... Το ξέρω ότι όλα αυτά έχουν σημασία. Αλλά τα είχα ήδη φροντίσει όλα αυτά. Αυτό είναι όλο!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.