Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α11.12 · Τι μπορεί να πάει στραβά με την atoi

Διάλεξη 11, διαφάνεια 42 · Δυσκολία ★★☆ · debug · Κεφάλαια: 11

Τι μπορεί να πάει στραβά με αυτήν τη συνάρτηση;

int atoi(char digits[]) {
  int result = 0;
  for (int i = 0; digits[i]; i++) {
    result = 10 * result + digits[i] - '0';
  }
  return result;
}

Υπόδειξη

Δοκιμάστε νοερά εισόδους που παραβιάζουν τις υποθέσεις της: χαρακτήρες που δεν είναι ψηφία (π.χ. πρόσημο), έναν πολύ μεγάλο αριθμό, έναν πίνακα χωρίς '\0' στο τέλος. Σκεφτείτε επίσης αν το όνομα της συνάρτησης συγκρούεται με κάτι από την standard library.

Αριθμός στον οδηγό: Α11.12 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: slides-lec11-atoi-pitfalls · Σύνδεσμος: https://progintro.github.io/study/questions/slides/slides-lec11-atoi-pitfalls.html · Markdown (GitHub)