Τα πάντα για την C

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 28 Φεβ 2012, 20:56

Ο format-specifier %d αναλαμβάνει να μετατρέψει έναν αριθμό από τη δυαδική μορφή στην οποία είναι αποθηκευμένος εσωτερικά, σε μια σειρά χαρακτήρων (string) από δεκαδικά ψηφία... αυτά που τυπώνει στην οθόνη δηλαδή.

Αυτο που ειπες πριν migf1 ... σε μια σειρα χαρακτηρων απο δεκαδικα ψηφία ? αυτο δεν το πολυπιανω να σου πω την αληθεια... χαρακτηρες απο δεκαδικα ψηφία? :/

btw o -e convertion specifier χρειαζεται να τον διαβάσω επείγει????
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 28 Φεβ 2012, 21:07

Bασικα αυτο που μου ειπε πριν ο migf1 με τον αστερίσκο αν δεν θες να έχεις εξάρτηση απο συγκεκριμένο πλάτος υπάρχει και εδω -> http://linux.die.net/man/3/printf

απλα δυσκολευομαι με τα αγγλικα . Τελοςπαντων θα το ψαξω και πιο μετα.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Ilias95 » 28 Φεβ 2012, 21:09

Star_Light έγραψε:Παντως ετσι οπως το γραφει στην σελιδα 39 στην 2η παράγραφο εμενα με μπερδευει.

"If the value to be printed requires fewer than m characters ".... Αν η προς εκτύπωση τιμή απαιτεί λιγότερους απο m χαρακτήρες αφου πιο πανω λεει οτι το m και το p ειναι ακέραιες σταθερές και το Χ ειναι το γράμμα ετσι ώστε να έχεις πχ %m.pX .... μηπως το λέει ετσι μονο επειδη βρίσκεται μεσα στο string μορφοποίησης ? αρα υποχρεωτικα οτιδηποτε υπαρχει μεσα στο string ειναι χαρακτήρες

Έστω ότι θέλω να εκτυπώσω τον αριθμό 12 και γράφω:
Κώδικας: Επιλογή όλων
printf("%5d", 12);

Ζητάω να τυπωθούν 5 ψηφία, αλλά το 12 έχει μόλις 2. Άρα θα τυπωθούν 3 κενά και τα δύο ψηφία του αριθμού.

Δηλαδή η έξοδος θα είναι:
Κώδικας: Επιλογή όλων
12
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 28 Φεβ 2012, 21:18

To ξερω αυτο! Απλα η δικη μου ενσταση ειναι πως οπως δειχνω λεει για characters.... αν ελεγε σκετο digits και δεν ανεφερε πουθενα για χαρακτηρες δεν θα το ανεφερα... κατι τρεχει εδω. Αποκλειεται να το λεει στο ετσι.... πρεπει να ξεκαθαρισω ορισμενα πραγματα πχ. Για να πω την αληθεια αυτο το "χυμαριο" στην αρχη

Κώδικας: Επιλογή όλων
printf( string , expr1 , expr2 )


δεν με προιδεασε και πολυ θετικα... αμα ο αλλος δεν ξερει οτι ενα string αποτελειται απο χαρακτηρες
τον έχεις μπερδεψει με την μια με αυτο που γραφεις στο βιβλιο σου.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 28 Φεβ 2012, 21:22

Ακριβώς αυτό που είπε ο Ηλίας!

Αν έχω καταλάβει καλά το πρόβλημά σου είναι πως μπερδεύεις στο μυαλό σου τις τιμές που έχουν μέσα τους οι μεταβλητές με τα προαιρετικά νούμερα που μπορείς να βάλεις στους format-specifiers της printf() προκειμένου να μορφοποιήσεις το πως θα εμφανιστούν στην οθόνη οι τιμές των μεταβλητών. Είναι 2 τελείως διαφορετικά πράγματα.

ΥΓ. Στα αγγλικά η λέξη "string" σημαίνει "πράγματα στη σειρά" (σημαίνει και σκοινί και δεσμίδα κλπ), δεν είναι δηλαδή όρος αποκλειστικά της πληροφορικής.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 28 Φεβ 2012, 21:31

Πάντως σωστά το γράφει το βιβλίο, το 1ο όρισμα της printf() είναι πάντα ένα string. H printf() διαβάζει αυτό το string (το 1ο της όρισμα δηλαδή) και ψάχνει να βρει αν περιέχει μέσα του formatting-specifiers (με ή χωρίς ειδικές μορφοποιήσεις μετά το %) και για όσους βρει, περιμένει να έχεις περάσει με την ίδια σειρά αντίστοιχες μεταβλητές ή εκφράσεις ή τιμές στα υπόλοιπα ορίσματα... για την κάθε μια από αυτές εφαρμόζει τη μορφοποίηση που έχεις καθορίσει στον αντίστοιχο formatting-specifier και τυπώνει την τιμή μορφοποιημένη.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 28 Φεβ 2012, 21:33

migf1 έγραψε:Πάντως σωστά το γράφει το βιβλίο, το 1ο όρισμα της printf() είναι πάντα ένα string. H printf() διαβάζει αυτό το string (το 1ο της όρισμα δηλαδή) και ψάχνει να βρει αν περιέχει μέσα του formatting-specifiers (με ή χωρίς ειδικές μορφοποιήσεις μετά το %) και για όσους βρει, περιμένει να έχεις περάσει με την ίδια σειρά αντίστοιχες μεταβλητές ή εκφράσεις ή τιμές στα υπόλοιπα ορίσματα... για την κάθε μια από αυτές εφαρμόζει τη μορφοποίηση που έχεις καθορίσει στον αντίστοιχο formatting-specifier και τυπώνει την τιμή μορφοποιημένη.


Ωραια το ξέρω αυτο. ΑΠλα αυτα που ελεγε πιο κατω με τους χαρακτηρες με μπέρδεψανε...
Αν εχω καταλαβει και γνωριζω ακριβως το παραπανω που εγραψες.... να αφήσω την printf
και να προχωρήσω στην scanf? ή να παραμείνω στην printf και να γλιτώσετε μετα απο κανα 3ωρο? :D
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 28 Φεβ 2012, 21:42

α! Οταν λεει m characters εννοει τους κενους? Οκ
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 28 Φεβ 2012, 21:42

Περίπου τα ίδια με την printf() είναι η scanf(), αλλά για είσοδο.

Εχει όμως κάποιες διαφορές (π.χ. ο αστερίσκος που λέγαμε πριν στην scanf() κάνει άλλη δουλειά... αγνοεί την μεταβλητή που του αντιστοιχεί). Επίσης μερικοί specifiers δουλεύουν ελαφρώς διαφορετικά στην scanf (π.χ. ο %i) ... νομίζω υπάρχουν και μερικοί που υπάρχουν μόνο στη μια ή μόνο στην άλλη συνάρτηση.

Ο καλύτερος τρόπος να λύσεις τις απορίες σου είναι να κάνεις δοκιμές μόνος σου όταν δεν σε καλύπτουν οι ασκήσεις του βιβλίου.

ΥΓ. Ξεκόλλα από τους χαρακτήρες ρεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεε! :lol:
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 28 Φεβ 2012, 21:44

Περα απο την πλακα τωρα δεν νομιζω πως το σημειο στο οποιο κολλησα
δεν ειναι pitfall :lol: :lol: και οφειλετε ΟΛΟΙ εδω μεσα να το παραδεχθειτε -.-

εγω αυτο που μου εξηγησε ο ηλιας το εκανα το μεσημερακι μονος μου
παραδειγματακια... αλλα μετα κολλησα με τις λεξεις.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι

cron