Βασική διαφορά – scanf vs gets
Μια συνάρτηση είναι ένα σύνολο εντολών για την εκτέλεση μιας συγκεκριμένης εργασίας. Χωρίς να γράφονται όλες οι δηλώσεις στο ίδιο πρόγραμμα, μπορεί να χωριστεί σε πολλαπλές συναρτήσεις. Στον προγραμματισμό, ο χρήστης μπορεί να ορίσει τις δικές του λειτουργίες. Υπάρχουν επίσης λειτουργίες που παρέχονται από γλώσσες προγραμματισμού. Η γλώσσα C παρέχει μια σειρά από λειτουργίες, έτσι ώστε ο προγραμματιστής να μπορεί να τις χρησιμοποιήσει απευθείας χωρίς να τις εφαρμόσει από την αρχή. Δύο τέτοιες λειτουργίες που παρέχονται από τη γλώσσα C είναι το scanf και το gets. Αυτό το άρθρο εξετάζει τη διαφορά μεταξύ αυτών των δύο λειτουργιών. Η βασική διαφορά μεταξύ scanf και gets είναι ότι το scanf τερματίζει τη λήψη εισόδου όταν συναντήσει ένα κενό διάστημα, νέα γραμμή ή End Of File (EOF), ενώ το get θεωρεί ένα κενό διάστημα ως μέρος της συμβολοσειράς εισόδου και τερματίζει την είσοδο όταν συναντήσει μια νέα γραμμή ή EOF.
Τι είναι το scanf;
Η συνάρτηση scanf μπορεί να διαβάσει την είσοδο από το πληκτρολόγιο και να τα αποθηκεύσει σύμφωνα με τον καθορισμένο καθορισμό μορφής. Διαβάζει την είσοδο μέχρι να συναντήσει κενό διάστημα, νέα γραμμή ή EOF. Η σύνταξη είναι η εξής.
scanf("string format", λίστα διευθύνσεων μεταβλητών);
Ανατρέξτε στο παράδειγμα που δίνεται παρακάτω για να κατανοήσετε το scanf.
Εικόνα 01: σάρωση με μία είσοδο
Σύμφωνα με το παραπάνω πρόγραμμα, η είσοδος που λαμβάνεται από το πληκτρολόγιο είναι ακέραιος, επομένως ο προσδιοριστής μορφής είναι %d. Εάν λαμβάνει μια τιμή χαρακτήρα, ο προσδιοριστής μορφής είναι %c. Εάν λάβετε μια τιμή κινητής υποδιαστολής, ο προσδιοριστής μορφής είναι %f. Η ληφθείσα τιμή εισόδου θα πρέπει να αποθηκευτεί στη μεταβλητή αριθμού. Επομένως, η διεύθυνση του αριθμού μεταβλητής μεταβιβάζεται στη συνάρτηση scanf. Τώρα η μεταβλητή αριθμός περιέχει την τιμή που δίνει ο χρήστης από το πληκτρολόγιο. Τέλος, μπορούμε να εκτυπώσουμε τη μεταβλητή αριθμού για να ελέγξουμε την τιμή.
Είναι επίσης δυνατό να λάβετε περισσότερες από μία τιμές ταυτόχρονα.
Εικόνα 02: σάρωση με πολλαπλές εισόδους
Οι ληφθείσες είσοδοι αποθηκεύονται στη μεταβλητή αριθμός1 και αριθμός2. Οι τιμές μπορούν να ελεγχθούν χρησιμοποιώντας το printf.
Τι είναι παίρνει;
Η συνάρτηση gets χρησιμοποιείται για τη λήψη δεδομένων από το πληκτρολόγιο μέχρι να συναντήσετε μια νέα γραμμή ή EOF. Το κενό διάστημα θεωρείται ως μέρος της εισόδου. Η σύνταξη για τη συνάρτηση gets είναι η εξής.
gets("where to save the string");
Εάν υπάρχει σφάλμα κατά τη λήψη της συμβολοσειράς, η συνάρτηση gets θα επιστρέψει μια τιμή null.
Ανατρέξτε στο παρακάτω παράδειγμα,
Εικόνα 03: παίρνει
Η είσοδος λαμβάνεται από τη συνάρτηση gets και αποθηκεύεται στη μεταβλητή word1. Εάν ο προγραμματιστής χρησιμοποίησε scanf αντί για gets και εισαγάγει μια συμβολοσειρά όπως "hello world", το scanf θα διαβάσει τη συμβολοσειρά ως δύο συμβολοσειρές λόγω του κενού διαστήματος. Αλλά το gets θα το διαβάσει ως μια συμβολοσειρά "γεια σου κόσμο".
Ποιες είναι οι ομοιότητες μεταξύ scanf και gets;
- Και οι δύο είναι συναρτήσεις που παρέχονται από τη γλώσσα προγραμματισμού C.
- Και τα δύο πρέπει να περιλαμβάνουν αρχείο κεφαλίδας stdio.h για να χρησιμοποιήσετε αυτές τις συναρτήσεις.
- Μπορούν να χρησιμοποιηθούν και τα δύο για τη λήψη δεδομένων από την τυπική είσοδο.
Ποια είναι η διαφορά μεταξύ scanf και gets;
scanf vs gets |
|
Το scanf είναι μια συνάρτηση C για την ανάγνωση εισόδου από την τυπική είσοδο μέχρι να συναντήσετε κενό διάστημα, νέα γραμμή ή EOF. | Το gets είναι μια συνάρτηση C για την ανάγνωση εισόδου από την τυπική είσοδο μέχρι να συναντήσετε μια νέα γραμμή ή EOF. Θεωρεί το κενό διάστημα ως μέρος της εισόδου. |
Σύνταξη | |
Η συνάρτηση scanf παίρνει τη συμβολοσειρά μορφής και τη λίστα διευθύνσεων των μεταβλητών. π.χ. scanf("%d", &number); | Η συνάρτηση gets παίρνει το όνομα της μεταβλητής για να αποθηκεύσει τη ληφθείσα τιμή. Π.χ. gets(name); |
Ευελιξία | |
Το scanf μπορεί να διαβάσει πολλές τιμές διαφορετικών τύπων δεδομένων. | Το gets() θα λαμβάνει μόνο δεδομένα συμβολοσειράς χαρακτήρων. |
Σύνοψη – scanf vs gets
Οι scanf και gets είναι συναρτήσεις που παρέχονται από τη γλώσσα προγραμματισμού C. Ο χρήστης δεν χρειάζεται να εφαρμόσει αυτές τις λειτουργίες από την αρχή. Μπορούν να τα χρησιμοποιήσουν απευθείας στα προγράμματά τους. Η διαφορά μεταξύ scanf και gets είναι ότι, το scanf τερματίζει τη λήψη εισόδου μόλις συναντήσει ένα κενό διάστημα, μια νέα γραμμή ή το End Of File (EOF) και θεωρεί ένα κενό διάστημα ως μέρος της συμβολοσειράς εισόδου και τερματίζει την είσοδο όταν συναντήσει μια νέα γραμμή ή EOF. Η χρήση scanf ή gets εξαρτάται από τον τρόπο λήψης των δεδομένων χρήστη από την τυπική είσοδο που είναι το πληκτρολόγιο τις περισσότερες φορές. Το scanf είναι πιο ευέλικτο από ό,τι γίνεται.
Λήψη της έκδοσης PDF του scanf vs gets
Μπορείτε να κατεβάσετε την έκδοση PDF αυτού του άρθρου και να τη χρησιμοποιήσετε για σκοπούς εκτός σύνδεσης σύμφωνα με τη σημείωση παραπομπής. Κάντε λήψη της έκδοσης PDF εδώ Διαφορά μεταξύ scanf και λήψης