jhanidis Δημοσ. 12 Νοεμβρίου 2010 Δημοσ. 12 Νοεμβρίου 2010 Καλημέρα!παρακάτω παραθέτω ένα κομμάτι του προγράμματος μου σε C στο οποίο έχω πρόβλημα.Σε αυτό το κομμάτι θέλω να διαβάζει μια απάντηση την οποία να αποθηκεύει ως string, έπειτα να μετατρέπει όλους τους χαρακτήρες σε πεζούς ώστε να ταιριάζουν με την επόμενη συνθήκη.Ο compiler όμως για σειρά της if μου βγάζει αυτό "comparison with string literal results in unspecified behavior". Τι κάνω λάθος?? #define N 7 char apantisi[N]; scanf("%6s", apantisi); for (i=0; i<N; i++) { apantisi=tolower(apantisi); } if (apantisi=="insert") { ......... }
Nimuro Δημοσ. 12 Νοεμβρίου 2010 Δημοσ. 12 Νοεμβρίου 2010 Καλημέρα!παρακάτω παραθέτω ένα κομμάτι του προγράμματος μου σε C στο οποίο έχω πρόβλημα.Σε αυτό το κομμάτι θέλω να διαβάζει μια απάντηση την οποία να αποθηκεύει ως string, έπειτα να μετατρέπει όλους τους χαρακτήρες σε πεζούς ώστε να ταιριάζουν με την επόμενη συνθήκη.Ο compiler όμως για σειρά της if μου βγάζει αυτό "comparison with string literal results in unspecified behavior". Τι κάνω λάθος?? #define N 7 char apantisi[N]; scanf("%6s", apantisi); for (i=0; i<N; i++) { apantisi=tolower(apantisi); } if (apantisi=="insert") { ......... } Στο βγάζει αυτό γιατί η C δεν ξέρει πως να συγκρίνει μεταβλητή char pointer με string literal. Κάντο με την strcmp που παίρνει όρισμα 2 char * και επιστρέφει 0 αν είναι όμοια. Ή απλά κάντο με μια επανάληψη που να ελέγχει ένα ένα τις θέσεις του πίνακα. Για παράδειγμα: char insert[] = "insert"; char myAnswer[15]; scanf("%s", myAnswer); if (strcmp(insert, myAnswer) == 0) dostuff(); else dontdostuff();
jhanidis Δημοσ. 12 Νοεμβρίου 2010 Μέλος Δημοσ. 12 Νοεμβρίου 2010 ευχαριστώ πολύ για την απάντηση.αυτό με την strcmp πως μπορεί να γίνει και τι σημαίνει το char*?είμαι αρχάριος κ δν καταλαβαινω κ πολλά.. :-\
Nimuro Δημοσ. 12 Νοεμβρίου 2010 Δημοσ. 12 Νοεμβρίου 2010 ευχαριστώ πολύ για την απάντηση.αυτό με την strcmp πως μπορεί να γίνει και τι σημαίνει το char*?είμαι αρχάριος κ δν καταλαβαινω κ πολλά.. :-\ Για το πρώτο σου απάντησα ήδη, για το δεύτερο διάβασε είτε κάποιο βιβλίο είτε στο internet ό,τι μπορείς για pointers στην C. Αν θες να μάθεις πραγματικά και όχι απλά επιφανειακά είναι πολύ σημαντικό να καταλάβεις τι παίζει με τους pointers (όταν δηλώνουμε μια μεταβλητή ως typehere * a ή typehere a[] ουσιαστικά δηλώνουμε έναν pointer σε τέτοιου τύπου μεταβλητή).
jhanidis Δημοσ. 12 Νοεμβρίου 2010 Μέλος Δημοσ. 12 Νοεμβρίου 2010 α!οκ!ευχαριστώ πολύ!υπάρχει μήπως κανένα site που να τα γράφει αναλυτικά?γιατί ότι βρήκα δεν τα πολυκατάλαβα..
V.I.Smirnov Δημοσ. 12 Νοεμβρίου 2010 Δημοσ. 12 Νοεμβρίου 2010 Πάρε ένα καλό βιβλίο για C++ και ξεκίνα να το διαβάζεις. Τα βιβλία είναι γραμμένα με συστηματικό τρόπο και εξηγούν ότι χρειάζεται για να προχωρήσεις ομαλά χωρίς γνωστικά κενά. Με τα sites δεν θα βγάλεις άκρη, θα τσαλαβουτάς από 'δω κι απο 'κεί χωρίς σαφή προσανατολισμό... -
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.