Δημοσιεύτηκε: 30 Αύγ 2011, 15:33
από migf1
Για αυτό είχα πει να ξεκινούσαμε με την strncmp πρώτα (αν κι εκείνη έχει στύψιμο μυαλού για τον έλεγχο των διάφορων περιπτώσεων)...

Θέλετε πριν συνεχίσουμε με αυτές τις δυο, να κάνετε την σκέτη strcmp (χωρίς το n) που είναι πάρα πολύ πιο απλή;

Πρότυπο:
Κώδικας: Επιλογή όλων
int s_compare( const char *s1, const char *s2 );

Επιστρέφει:
  • 0 αν τα s1 και s2 είναι ίδια,
  • θετική τιμή αν το s1 είναι μεγαλύτερο του s2
  • αρνητική τιμή αν το s1 είναι μικρότερο του s2
το μικρότερο και μεγαλύτερο δεν καθορίζεται από το μήκος των strings, αλλά από το αν ο πρώτος μη κοινός χαρακτήρας τους έχει μικρότερο ή μεγαλύτερο ASCII code στο πρώτο string.

Για παράδειγμα:
το s_compare("abc", "abd") δίνει αρνητική τιμή, διότι 'c' < 'd'... άρα το s1 είναι μικρότερο του s2
το s_compare("ab", "c" ) δίνει επίσης αρνητική τιμή, διότι 'a' < 'c' ... άρα το s1 είναι μικρότερο του s2
το s_compare("abc", "abcd" ) δίνει επίσης αρνητική τιμή, διότι '\0' < 'd' ... άρα το s1 είναι μικρότερο του s2
το s_compare("d", "abc" ) δίνει θετική τιμή, διότι 'd' > 'a' ... άρα το s1 είναι μεγαλύτερο του s2
κλπ