Στη γλώσσα C, μπορείτε να λάβετε είσοδο από τον χρήστη χρησιμοποιώντας τη συνάρτηση scanf()
. Η scanf()
σάς επιτρέπει να διαβάσετε τιμές από το πληκτρολόγιο και να τις αποθηκεύσετε σε μεταβλητές.
Για να λάβετε είσοδο από το χρήστη, μπορείτε να χρησιμοποιήσετε τη συνάρτηση scanf() στη C:
#include <stdio.h> int main() { int num; // Δήλωση μεταβλητής για τον αριθμό που θα εισαχθεί printf("Please enter a number: "); // Εμφάνιση μηνύματος για την εισαγωγή αριθμού scanf("%d", &num); // Ανάγνωση του αριθμού που εισάγει ο χρήστης και αποθήκευση στη μεταβλητή num printf("The number you entered is %d", num); // Εμφάνιση του αριθμού που εισήχθη return 0; }
Σε αυτό το παράδειγμα, η συνάρτηση printf() χρησιμοποιείται για να ζητήσει από το χρήστη να εισάγει έναν αριθμό. Η συνάρτηση scanf() χρησιμοποιείται για να αποθηκεύσει την τιμή που εισήγαγε ο χρήστης στη μεταβλητή num. Στη συνέχεια, η συνάρτηση printf() χρησιμοποιείται για να εμφανίσει την τιμή της μεταβλητής num στο χρήστη.
Σημειώστε ότι στο scanf(), χρησιμοποιούμε το %d
για να δηλώσουμε ότι προσδιορίζουμε έναν ακέραιο αριθμό, ενώ η μεταβλητή num περνάει σαν παράμετρος στη συνάρτηση με τον τελεστή & (address-of operator) για να πάρει την τιμή που θα δοθεί από το χρήστη.
Η συνάρτηση scanf()
επιτρέπει επίσης τη λήψη πολλαπλών εισόδων (ένας ακέραιος αριθμός και ένας χαρακτήρας στο παρακάτω παράδειγμα):
#include <stdio.h> int main() { int age; // Μεταβλητή για την ηλικία char gender; // Μεταβλητή για το φύλο printf("Please enter your age and gender (M/F): "); // Εμφάνιση μηνύματος για την εισαγωγή ηλικίας και φύλου scanf("%d %c", &age, &gender); // Ανάγνωση της ηλικίας και του φύλου από τον χρήστη printf("Your age is %d and your gender is %c", age, gender); // Εμφάνιση της ηλικίας και του φύλου που εισήγαγε ο χρήστης return 0; }
Σε αυτό το παράδειγμα, ο χρήστης καλείται να εισαγάγει την ηλικία του και το φύλο του χαρακτηρισμένο ως “M” ή “F”. Η συνάρτηση scanf()
διαβάζει την είσοδο του χρήστη και αποθηκεύει την τιμή της ηλικίας στη μεταβλητή age
και το φύλο στη μεταβλητή gender
. Στη συνέχεια, η συνάρτηση printf()
χρησιμοποιείται για να εμφανίσει την ηλικία και το φύλο του χρήστη.
Στη συνάρτηση scanf()
, χρησιμοποιούμε το %d
για να προσδιορίσουμε ότι αναμένουμε έναν ακέραιο αριθμό, ενώ το %c
αναμένει έναν χαρακτήρα. Προσέξτε ότι η μεταβλητή gender
δεν περνάει με τον τελεστή &
(address-of operator) διότι είναι ένας χαρακτήρας και ήδη αντιστοιχεί σε έναν δείκτη.
Μπορείτε επίσης να λάβετε μια συμβολοσειρά που εισήγαγε ο χρήστης:
#include <stdio.h> int main() { char name[20]; // Δήλωση μιας μεταβλητής που θα αποθηκεύσει το όνομα printf("Please enter your name: "); // Εκτύπωση μηνύματος για την εισαγωγή του ονόματος scanf("%s", name); // Ανάγνωση του ονόματος από το χρήστη printf("Your name is %s", name); // Εκτύπωση του ονόματος που δόθηκε return 0; // Επιστροφή της τιμής 0 για ολοκλήρωση του προγράμματος }
Σε αυτό το παράδειγμα, ζητείται από το χρήστη να εισαγάγει το όνομά του. Η συνάρτηση scanf()
διαβάζει τη συμβολοσειρά που εισήγαγε ο χρήστης και την αποθηκεύει στη μεταβλητή name
. Στη συνέχεια, η συνάρτηση printf()
χρησιμοποιείται για να εμφανίσει το όνομα του χρήστη.
Προσέξτε ότι χρησιμοποιούμε το %s
για να δηλώσουμε ότι αναμένουμε μια συμβολοσειρά ως είσοδο, ενώ η μεταβλητή name
είναι ένας δείκτης στην αρχή της συμβολοσειράς. Επίσης, δεν χρειάζεται να χρησιμοποιήσουμε τον τελεστή &
(address-of operator) όταν περνάμε τη μεταβλητή name
στη συνάρτηση scanf()
, καθώς αντιπροσωπεύει ήδη ένα δείκτη σε αυτήν τη συμβολοσειρά.
Ωστόσο, η συνάρτηση scanf()
έχει ορισμένα περιορισμούς: θεωρεί το κενό (κενό διάστημα, tab κλπ.) ως χαρακτήρα τερματισμού, το οποίο σημαίνει ότι μπορεί να εμφανίσει μόνο μια λέξη (ακόμα κι αν πληκτρολογήσετε πολλές λέξεις).
Για παράδειγμα:
#include <stdio.h> int main() { char name[20]; // Δήλωση μιας μεταβλητής name τύπου πίνακα χαρακτήρων με μέγεθος 20 printf("Please enter your full name: "); // Εκτύπωση μηνύματος προς τον χρήστη scanf("%s", name); // Ανάγνωση της εισόδου του χρήστη και αποθήκευσή της στη μεταβλητή name printf("Your name is %s", name); // Εκτύπωση του ονόματος που εισήγαγε ο χρήστης return 0; // Επιστροφή της τιμής 0 για να υποδηλώσει επιτυχή ολοκλήρωση του προγράμματος }
Ο παραπάνω κώδικας σε C ζητά από τον χρήστη να εισάγει το πλήρες όνομά του και στη συνέχεια το εκτυπώνει στην οθόνη. Ο κώδικας ακολουθεί τα παρακάτω βήματα:
- Δηλώνει μια μεταβλητή
name
τύπου πίνακα χαρακτήρων με μέγεθος 20 για να αποθηκεύσει το όνομα που θα δοθεί από τον χρήστη. - Χρησιμοποιεί τη συνάρτηση
printf
για να εκτυπώσει το μήνυμα “Please enter your full name: ” και ζητά από τον χρήστη να εισάγει το όνομά του. - Χρησιμοποιεί τη συνάρτηση
scanf
για να διαβάσει την είσοδο του χρήστη και να αποθηκεύσει το όνομα στη μεταβλητήname
. - Χρησιμοποιεί ξανά τη συνάρτηση
printf
για να εκτυπώσει το μήνυμα “Your name is ” ακολουθούμενο από το όνομα που δόθηκε από τον χρήστη. - Η εντολή
return 0
υποδηλώνει ότι το πρόγραμμα ολοκληρώθηκε με επιτυχία και επιστρέφει την τιμή 0 στο σύστημα.
Για να διαβάσετε πολλές λέξεις από τον χρήστη, μπορείτε να χρησιμοποιήσετε τη συνάρτηση fgets()
. Η συνάρτηση fgets()
διαβάζει μια γραμμή από τον χρήστη και συνεχίζει μέχρι να ανιχνεύσει έναν χαρακτήρα νέας γραμμής (\n
) ή έναν άλλο καθορισμένο χαρακτήρα τερματισμού. Με αυτόν τον τρόπο, μπορείτε να διαβάσετε ολόκληρη την είσοδο του χρήστη, συμπεριλαμβανομένων των χαρακτήρων κενού.
Για αυτό το λόγο, όταν δουλεύουμε με συμβολοσειρές, συνήθως χρησιμοποιούμε τη συνάρτηση fgets()
για να διαβάσουμε μια γραμμή κειμένου. Πρέπει να σημειώσουμε ότι πρέπει να συμπεριλάβετε τα παρακάτω ορίσματα: το όνομα της μεταβλητής συμβολοσειράς, το sizeof(string_name)
και το stdin
:
#include <stdio.h> int main() { char name[20]; // Δήλωση μεταβλητής για το όνομα printf("Please enter your full name: "); // Εμφάνιση μηνύματος προς τον χρήστη fgets(name, sizeof(name), stdin); // Ανάγνωση του ονόματος από το χρήστη printf("Your name is %s", name); // Εμφάνιση του ονόματος στην οθόνη return 0; // Επιστροφή της τιμής 0 για ολοκλήρωση του προγράμματος }
Ο παραπάνω κώδικας σε C περιλαμβάνει τα εξής σημεία:
- Η γραμμή
#include <stdio.h>
εισάγει την απαραίτητη βιβλιοθήκη για την είσοδο/έξοδο στο πρόγραμμα. - Η συνάρτηση
main()
είναι η κύρια συνάρτηση του προγράμματος. - Η γραμμή
char name[20];
δηλώνει μια μεταβλητή τύπου πίνακα χαρακτήρων με χωρητικότητα 20 θέσεων για την αποθήκευση του ονόματος. - Η γραμμή
printf("Please enter your full name: ");
εμφανίζει ένα μήνυμα προς τον χρήστη. - Η γραμμή
fgets(name, sizeof(name), stdin);
διαβάζει το όνομα που εισάγει ο χρήστης από το πληκτρολόγιο και το αποθηκεύει στη μεταβλητήname
. - Η γραμμή
printf("Your name is %s", name);
εμφανίζει το ονοματεπώνυμο που εισήγαγε ο χρήστης. - Η γραμμή
return 0;
επιστρέφει την τιμή 0, υποδηλώνοντας την ομαλή ολοκλήρωση του προγράμματος.
Αν υποθέσουμε ότι ο χρήστης εισάγει το όνομα “John Smith”, το αποτέλεσμα στην οθόνη θα είναι:
Please enter your full name: John Smith Your name is John Smith
Το πρόγραμμα ζητά από τον χρήστη να εισάγει το πλήρες όνομά του. Έπειτα, το όνομα που εισήγαγε ο χρήστης εμφανίζεται στην οθόνη.