Προς το περιεχόμενο

Πρόβλημα με string και if


jhanidis

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα!παρακάτω παραθέτω ένα κομμάτι του προγράμματος μου σε 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 στο οποίο έχω πρόβλημα.Σε αυτό το κομμάτι θέλω να διαβάζει μια απάντηση την οποία να αποθηκεύει ως 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 αν είναι όμοια. Ή απλά κάντο με μια επανάληψη που να ελέγχει ένα ένα τις θέσεις του πίνακα. :P

 

Για παράδειγμα:

 

char insert[] = "insert";

char myAnswer[15];

scanf("%s", myAnswer);

if (strcmp(insert, myAnswer) == 0)

dostuff();

else

dontdostuff();

Δημοσ.

ευχαριστώ πολύ για την απάντηση.αυτό με την strcmp πως μπορεί να γίνει και τι σημαίνει το char*?είμαι αρχάριος κ δν καταλαβαινω κ πολλά.. :-\

Δημοσ.
ευχαριστώ πολύ για την απάντηση.αυτό με την strcmp πως μπορεί να γίνει και τι σημαίνει το char*?είμαι αρχάριος κ δν καταλαβαινω κ πολλά.. :-\

 

Για το πρώτο σου απάντησα ήδη, για το δεύτερο διάβασε είτε κάποιο βιβλίο είτε στο internet ό,τι μπορείς για pointers στην C. Αν θες να μάθεις πραγματικά και όχι απλά επιφανειακά είναι πολύ σημαντικό να καταλάβεις τι παίζει με τους pointers (όταν δηλώνουμε μια μεταβλητή ως typehere * a ή typehere a[] ουσιαστικά δηλώνουμε έναν pointer σε τέτοιου τύπου μεταβλητή).

Δημοσ.

α!οκ!ευχαριστώ πολύ!υπάρχει μήπως κανένα site που να τα γράφει αναλυτικά?γιατί ότι βρήκα δεν τα πολυκατάλαβα.. :-)

Δημοσ.

Πάρε ένα καλό βιβλίο για C++ και ξεκίνα να το διαβάζεις.

Τα βιβλία είναι γραμμένα με συστηματικό τρόπο και εξηγούν ότι χρειάζεται για να προχωρήσεις ομαλά χωρίς γνωστικά κενά.

Με τα sites δεν θα βγάλεις άκρη, θα τσαλαβουτάς από 'δω κι απο 'κεί χωρίς σαφή προσανατολισμό...

 

-

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...