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

Α18.6 · Μια λέξη σε char[7] με scanf

Διάλεξη 18, διαφάνειες 31–35 · Δυσκολία ★★☆ · debug · Κεφάλαια: 18, 12

Τι κάνει το παρακάτω πρόγραμμα;

#include <stdio.h>
int main() {
  char message[7];
  printf("Say something: ");
  scanf("%s", message);
  printf("%s\n", message);
  return 0;
}
$ ./message
Say something: hello!
hello!
  1. Δεν βάλαμε & πριν τη μεταβλητή message. Πώς και λειτουργεί;
  2. Μπορεί να πάει κάτι στραβά εδώ; Τι θα συμβεί αν ο χρήστης γράψει Houston, we've had a problem here.; Πώς το διορθώνουμε;

Υπόδειξη

Θυμηθείτε σε τι μετατρέπεται το όνομα ενός πίνακα όταν το περνάμε σε συνάρτηση. Για το δεύτερο σκέλος, μετρήστε πόσους χαρακτήρες (μαζί με το '\0') διαβάζει το %s από την πρώτη λέξη και πόσοι χωρούν στον πίνακα· η scanf δέχεται και πλάτος πεδίου.

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