Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

4.3 Είσοδος από το χρήστη στην C

Έχετε ήδη μάθει ότι η συνάρτηση printf() χρησιμοποιείται για να εμφανίσετε τιμές στη γλώσσα προγραμματισμού C.

Για να λάβετε είσοδο από το χρήστη, μπορείτε να χρησιμοποιήσετε τη συνάρτηση scanf() στη C:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
int main() {
int num;
printf("Please enter a number: ");
scanf("%d", &num);
printf("The number you entered is %d", num);
return 0;
}
#include <stdio.h> int main() { int num; printf("Please enter a number: "); scanf("%d", &num); printf("The number you entered is %d", num); return 0; }
#include <stdio.h>

int main() {
    int num;
    
    printf("Please enter a number: ");
    scanf("%d", &num);
    
    printf("The number you entered is %d", num);
    
    return 0;
}

Σε αυτό το παράδειγμα, η συνάρτηση printf() χρησιμοποιείται για να ζητήσει από το χρήστη να εισάγει έναν αριθμό. Η συνάρτηση scanf() χρησιμοποιείται για να αποθηκεύσει την τιμή που εισήγαγε ο χρήστης στη μεταβλητή num. Στη συνέχεια, η συνάρτηση printf() χρησιμοποιείται για να εμφανίσει την τιμή της μεταβλητής num στο χρήστη.

Σημειώστε ότι στο scanf(), χρησιμοποιούμε το %d για να δηλώσουμε ότι προσδιορίζουμε έναν ακέραιο αριθμό, ενώ η μεταβλητή num περνάει σαν παράμετρος στη συνάρτηση με τον τελεστή & (address-of operator) για να πάρει την τιμή που θα δοθεί από το χρήστη.

Η συνάρτηση scanf() επιτρέπει επίσης τη λήψη πολλαπλών εισόδων (ένας ακέραιος αριθμός και ένας χαρακτήρας στο παρακάτω παράδειγμα):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#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;
}
#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; }
#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) διότι είναι ένας χαρακτήρας και ήδη αντιστοιχεί σε έναν δείκτη.

Μπορείτε επίσης να λάβετε μια συμβολοσειρά που εισήγαγε ο χρήστης:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
int main() {
char name[20];
printf("Please enter your name: ");
scanf("%s", name);
printf("Your name is %s", name);
return 0;
}
#include <stdio.h> int main() { char name[20]; printf("Please enter your name: "); scanf("%s", name); printf("Your name is %s", name); return 0; }
#include <stdio.h>

int main() {
    char name[20];

    printf("Please enter your name: ");
    scanf("%s", name);

    printf("Your name is %s", name);

    return 0;
}

Σε αυτό το παράδειγμα, ζητείται από το χρήστη να εισαγάγει το όνομά του. Η συνάρτηση scanf() διαβάζει τη συμβολοσειρά που εισήγαγε ο χρήστης και την αποθηκεύει στη μεταβλητή name. Στη συνέχεια, η συνάρτηση printf() χρησιμοποιείται για να εμφανίσει το όνομα του χρήστη.

Προσέξτε ότι χρησιμοποιούμε το %s για να δηλώσουμε ότι αναμένουμε μια συμβολοσειρά ως είσοδο, ενώ η μεταβλητή name είναι ένας δείκτης στην αρχή της συμβολοσειράς. Επίσης, δεν χρειάζεται να χρησιμοποιήσουμε τον τελεστή & (address-of operator) όταν περνάμε τη μεταβλητή name στη συνάρτηση scanf(), καθώς αντιπροσωπεύει ήδη ένα δείκτη σε αυτήν τη συμβολοσειρά.

Ωστόσο, η συνάρτηση scanf() έχει ορισμένα περιορισμούς: θεωρεί το κενό (κενό διάστημα, tab κλπ.) ως χαρακτήρα τερματισμού, το οποίο σημαίνει ότι μπορεί να εμφανίσει μόνο μια λέξη (ακόμα κι αν πληκτρολογήσετε πολλές λέξεις). Για παράδειγμα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <stdio.h>
int main() {
char name[20];
printf("Please enter your full name: ");
scanf("%s", name);
printf("Your name is %s", name);
return 0;
}
#include <stdio.h> int main() { char name[20]; printf("Please enter your full name: "); scanf("%s", name); printf("Your name is %s", name); return 0; }
#include <stdio.h>

int main() {
    char name[20];

    printf("Please enter your full name: ");
    scanf("%s", name);

    printf("Your name is %s", name);

    return 0;
}

Εάν εκτελέσετε αυτό το πρόγραμμα και πληκτρολογήσετε “John Smith” ως είσοδος, θα εμφανιστεί μόνο η λέξη “John” στην έξοδο της συνάρτησης printf(), αγνοώντας το υπόλοιπο της εισόδου “Smith”.

Για να διαβάσετε πολλές λέξεις, μπορείτε να χρησιμοποιήσετε τη συνάρτηση fgets(), η οποία διαβάζει μια σειρά από τον χρήστη και διακόπτει μόνο όταν ανιχνεύσει έναν χαρακτήρα νέας γραμμής ή έναν άλλο καθορισμένο χαρακτήρα τερματισμού. Έτσι, μπορείτε να διαβάσετε ολόκληρη την είσοδο του χρήστη, συμπεριλαμβανομένων χαρακτήρων κενού.

Από το παραπάνω παράδειγμα, θα περιμένατε το πρόγραμμα να εκτυπώσει “John Doe”, αλλά αυτό εμφανίζει μόνο το “John”.

Για αυτό το λόγο, όταν δουλεύουμε με συμβολοσειρές, συνήθως χρησιμοποιούμε τη συνάρτηση fgets() για να διαβάσουμε μια γραμμή κειμένου. Πρέπει να σημειώσουμε ότι πρέπει να συμπεριλάβετε τα παρακάτω ορίσματα: το όνομα της μεταβλητής συμβολοσειράς, το sizeof(string_name) και το stdin:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#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;
}
#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; }
#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;
}

Σε αυτό το παράδειγμα, η συνάρτηση fgets() διαβάζει μια γραμμή κειμένου από το χρήστη και την αποθηκεύει στη μεταβλητή name. Η συνάρτηση sizeof() χρησιμοποιείται για να καθορίσει το μέγεθος της μεταβλητής συμβολοσειράς name, ενώ το stdin υποδεικνύει ότι τα δεδομένα πρέπει να διαβαστούν από την κανονική ροή εισόδου του προγράμματος (δηλαδή από το πληκτρολόγιο).

Η fgets() αποθηκεύει την ολόκληρη γραμμή, συμπεριλαμβανομένων κενών, στη μεταβλητή συμβολοσειράς.

Δωρεα μεσω Paypal

Για την κάλυψη αναγκών φιλοξενίας και δημιουργίας περιεχομένου.

κατηγοριες μαθηματων

Ιστορικο ενοτητων

top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων