Κοινή χρήση τεχνολογίας

Γλώσσα C - printf, scanf, άλλες λειτουργίες εισόδου και εξόδου

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

λειτουργία printf

1.Γενική μορφή της συνάρτησης printf:


Η γενική μορφή της συνάρτησης printf είναι printf (έλεγχος μορφής, λίστα εξόδου)
Για παράδειγμα:

printf("%d,%cn",i,c);

(1) "Έλεγχος μορφής"

Είναι μια συμβολοσειρά που περικλείεται σε διπλά απόστροφα, που ονομάζεται "συμβολοσειρά ελέγχου μετατροπής" ή "συμβολοσειρά μορφοποίησης" για συντομία. Περιλαμβάνει δύο πληροφορίες:
① Μορφοποίηση δήλωσης. Η δήλωση μορφής αποτελείται από "%" και χαρακτήρες μορφής, όπως %d, %f, κ.λπ. Η λειτουργία του είναι να μετατρέπει τα δεδομένα εξόδου στην καθορισμένη μορφή και στη συνέχεια να τα εξάγει. Οι δηλώσεις μορφοποίησης ξεκινούν πάντα με τον χαρακτήρα "%".

Μεταξύ αυτών: το d αντιπροσωπεύει έναν δεκαδικό ακέραιο, το c αντιπροσωπεύει έναν μόνο χαρακτήρα, το s αντιπροσωπεύει ένα δεκαδικό, το x αντιπροσωπεύει την έξοδο σε δεκαεξαδική μορφή και το p αντιπροσωπεύει τη διεύθυνση μνήμης εκτύπωσης, η οποία εξάγεται επίσης σε δεκαεξαδική μορφή χρησιμοποιεί το σύμβολο λειτουργίας μεταβλητής διεύθυνσης &.
② Συνηθισμένοι χαρακτήρες. Οι συνηθισμένοι χαρακτήρες είναι χαρακτήρες που πρέπει να εμφανίζονται αμετάβλητοι κατά την έξοδο. Για παράδειγμα, τα κόμματα, τα κενά και οι νέες γραμμές μέσα στα διπλά κόμματα στην παραπάνω συνάρτηση printf μπορούν επίσης να περιλαμβάνουν άλλους χαρακτήρες.


(2) "Στήλη πίνακα εξόδου"

Είναι κάποια δεδομένα που πρέπει να εξάγει το πρόγραμμα, τα οποία μπορεί να είναι σταθερά, μεταβλητή ή έκφραση.

Σημείωση:
(1) Αναγκαστική μετατροπή: μετατροπή ακεραίων σε δεκαδικούς
  1. int data = 10;
  2. int chushu = 3;
  3. float result;
  4. result = (float)data/chushu;
(2) Καθορίστε το πλάτος δεδομένων και τον αριθμό των δεκαδικών ψηφίων, χρησιμοποιήστε %m.nf
Η μορφή "%7.2" έχει χρησιμοποιηθεί για να καθοριστεί ότι τα δεδομένα εξόδου καταλαμβάνουν 7 στήλες, συμπεριλαμβανομένων 2 δεκαδικών ψηφίων. Το τελευταίο ψηφίο στρογγυλοποιείται, δηλαδή, η κατά προσέγγιση τιμή λαμβάνεται προς τα πάνω ή προς τα κάτω. Εάν η Tathagata καθορίσει το δεκαδικό μέρος ως 0, όχι μόνο δεν θα βγαίνει το δεκαδικό, αλλά ούτε και η υποδιαστολή. Επομένως, μην προσδιορίζετε εύκολα τον αριθμό των δεκαδικών ψηφίων ως 0.
(3) Τα δεδομένα εξόδου ευθυγραμμίζονται προς τα αριστερά, χρησιμοποιώντας %-m.nf
Η προσθήκη ενός αρνητικού πρόσημου μπροστά από τα m και n έχει βασικά το ίδιο αποτέλεσμα με τη φόρμα %m.nf Ωστόσο, όταν το μήκος δεδομένων δεν υπερβαίνει το m, τα δεδομένα μετακινούνται προς τα αριστερά και προστίθενται κενά στο δεξί άκρο.

λειτουργία σάρωσης

1.Γενική μορφή λειτουργίας scanf


scanf (έλεγχος μορφής, στήλη πίνακα διευθύνσεων)

Η έννοια του "έλεγχος μορφής" είναι η ίδια με τη συνάρτηση printf. Η "στήλη πίνακα διευθύνσεων" είναι μια στήλη πίνακα που αποτελείται από πολλές διευθύνσεις, οι οποίες μπορεί να είναι η διεύθυνση μιας μεταβλητής ή η πρώτη διεύθυνση μιας συμβολοσειράς.


2.Μορφοποιήστε τον ήχο στη λειτουργία σάρωσης


Παρόμοια με τη δήλωση μορφής στη συνάρτηση printf, ξεκινά με % και τελειώνει με χαρακτήρα μορφοποίησης και μπορούν να εισαχθούν πρόσθετοι χαρακτήρες στη μέση.
Η συνάρτηση scanf μπορεί να ξαναγραφτεί στην ακόλουθη μορφή

scanf("a=%f,b=%f,c=%f",&a,&b,&c);


Εκτός από τη δήλωση μορφής %f, υπάρχουν επίσης ορισμένοι συνηθισμένοι χαρακτήρες (συμπεριλαμβανομένων των "a=", "b=" και ",") στη συμβολοσειρά μορφοποίησης.

Σημείωση:

(1)Σύμβολο διεύθυνσης &

Το "format control" στη συνάρτηση scanf θα πρέπει να ακολουθείται από τη διεύθυνση της μεταβλητής και όχι από το όνομα της μεταβλητής.Για παράδειγμα, αν οι a και b είναι ακέραιες μεταβλητές, εάν γράφονται ως

scaní("%f%f%f",a,b,c);

Δεν είναι σωστό. Το "a,b,c" πρέπει να αλλάξει σε "&a,&b,&c". Πολλοί αρχάριοι κάνουν αυτό το λάθος.

(2)Εισαγάγετε όπως είναι

Εάν υπάρχουν άλλοι χαρακτήρες στη "συμβολοσειρά ελέγχου μορφής" εκτός από τη δήλωση μορφής, οι ίδιοι χαρακτήρες με αυτούς τους χαρακτήρες θα πρέπει να εισαχθούν στις αντίστοιχες θέσεις κατά την εισαγωγή δεδομένων.Αν υπάρχει

scanf("a=%f,b=%f,c=%f",&a,&b,&c);

Κατά την εισαγωγή δεδομένων, οι ίδιοι χαρακτήρες θα πρέπει να εισάγονται στις αντίστοιχες θέσεις.δηλαδή εισαγωγή
a=1,b=3,c=2 (προσοχή στο περιεχόμενο εισαγωγής)

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

scanf("%d%d%f",&data,&data1,&data2);
(3) Εισαγωγή χαρακτήρων

Κατά τη δήλωση χαρακτήρων εισόδου στη μορφή "%c", οι χαρακτήρες διαστήματος και οι χαρακτήρες σε "χαρακτήρες διαφυγής" εισάγονται ως έγκυροι χαρακτήρες, για παράδειγμα:
 

scanf("%c%c%c,&c1,&c2,&c3);

Κατά την εκτέλεση αυτής της λειτουργίας, θα πρέπει να εισαγάγετε 3 διαδοχικούς χαρακτήρες χωρίς κενά μεταξύ τους.
Θα ήταν λάθος να εισαγάγετε ένα κενό μεταξύ δύο χαρακτήρων.

Τα κενά και οι νέες γραμμές είναι επίσης χαρακτήρες Δεν μπορείτε να χρησιμοποιήσετε κενά ή νέες γραμμές κατά την εισαγωγή.

(4) Μικτή είσοδος

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

scanf("%d%c%f,&a,&b,&c);

Η σωστή είσοδος είναι: 1234h7.6

Τα πρώτα δεδομένα αντιστοιχούν στη μορφή %d Μετά την εισαγωγή του 1234, εμφανίζεται ο χαρακτήρας 'h', επομένως, το σύστημα πιστεύει ότι δεν υπάρχουν ψηφία μετά την τιμή 1234. Τα πρώτα δεδομένα πρέπει να τελειώνουν εδώ, οπότε το 1234 αποστέλλεται στη μεταβλητή. ένα. Στείλτε τον επόμενο χαρακτήρα «h» στη μεταβλητή χαρακτήρων b Δεδομένου ότι το %c απαιτεί την εισαγωγή μόνο ενός χαρακτήρα, το σύστημα καθορίζει ότι η εισαγωγή του χαρακτήρα έχει τελειώσει, επομένως δεν χρειάζεται να προσθέσετε κενό διάστημα μετά τον χαρακτήρα εισαγωγής. η'. Η τιμή μετά τον χαρακτήρα 'h' πρέπει να σταλεί στη μεταβλητή c. Εάν το 1230.26 πληκτρολογηθεί κατά λάθος ως 123o.26 λόγω αμέλειας, αφού το γράμμα o εμφανίζεται μετά το 123, θεωρείται ότι τα αριθμητικά δεδομένα τελειώνουν εδώ και οι χαρακτήρες που ακολουθούν δεν διαβάζονται.

Έτσι, όταν εισάγουμε διαφορετικούς τύπους δεδομένων, θα πρέπει να κάνουμε τις αντίστοιχες συναρτήσεις σάρωσης ανά τύπο.

(5) Πολλαπλές λειτουργίες σάρωσης

Όταν ένα πρόγραμμα περιέχει δύο ή περισσότερες συναρτήσεις σάρωσης, η τελευταία συνάρτηση σάρωσης θα θεωρεί τον χαρακτήρα νέας γραμμής μετά την είσοδο της προηγούμενης συνάρτησης σάρωσης ως δική της είσοδο, με αποτέλεσμα η τελευταία συνάρτηση σάρωσης να μην μπορεί να λάβει κανονικά είσοδο, επομένως πρέπει να χρησιμοποιηθεί Ανάμεσα στις δύο συναρτήσεις scanf, εισαγάγετε ένα getchar() για να απορροφήσει τον επιπλέον χαρακτήρα νέας γραμμής.

Άλλες λειτουργίες εισόδου και εξόδου:

βάζει: διαφορά από printf
(1) Αυτόματη προσθήκη αλλαγών γραμμής
Το (2).printf υποστηρίζει μια ποικιλία μοτίβων εξόδου και το puts είναι η συμβολοσειρά εξόδου.

getchar, putchar

Ασκήσεις εισόδου και εξόδου:

1. Εισάγετε κεφαλαία γράμματα και βγάζετε πεζά

Η γνώση των κωδικών ASCII χρησιμοποιείται εδώ Ο κωδικός ASCII + 32 που αντιστοιχεί σε κεφαλαία γράμματα είναι ο κωδικός ASCII που αντιστοιχεί σε πεζά γράμματα.

Έτσι το παράδειγμα κώδικα είναι

  1. #include<stdio.h>
  2. int main()
  3. {
  4. char a;
  5. char b;
  6. printf("请输入一个大写字母:");
  7. scanf("%c",&a);
  8. b = a+32;
  9. printf("其对应的小写字母为:%c",b);
  10. return 0;
  11. }