Προς το περιεχόμενο

c & getchar()


Mystirios

Προτεινόμενες αναρτήσεις

Δημοσ.

Ξέρει ή μπορεί κάποιος να βρει το κώδικα της Char getchar(void) ?

Βάσικα θέλω μια συνάρτηση παρόμοια της readkey της pascal ωστε με το που πατάω ένα πλήκτρο να διαβάζεται αυτό χωρίς να πρέπει να πατηθεί enter στη συνέχεια.

 

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

Δημοσ.

Μήπως ψάχνεις αυτό:

 

>
  #include "syscalls.h"

  /* getchar:  unbuffered single character input */
  int getchar(void) {
      char c;
      return (read(0, &c, 1) == 1) ? (unsigned char) c : EOF;
  }

 

Θα το βρεις πλήρες στο κεφάλαιο 8 παράγραφος 2 του K&R "Η γλώσσα Προγραμματισμού C".

Ελπίζω να κάνεις την δουλειά σου διότι δεν ξέρω ακριβώς τι κάνει η readkey που αναφέρεις.

 

Τώρα, αν μιλάμε για UNIX-Linux και θέλουμε ΠΛΗΡΗ ΕΛΕΓΧΟ του τερματικού θα πρέπει να ρίξεις μια ΚΑΛΗ ματιά στο κεφαλαιο 6 παράγραφος 4 του βιβλίου K&P"Το περιβάλλον προγραμματισμού UNIX".

Δημοσ.

Το enter μπορείς να το αγνοήσεις, δεν είναι πρόβλημα.

 

Η readkey επιστρέφει κι αυτή το enter. Η βασική της διαφορά με την getchar είναι το πρώτο που είπες, ότι μπορεί να διαβάσει π.χ. ένα 'a' χωρίς να χρειάζεται να πατηθεί enter, κι έτσι μπορεί π.χ. να τη χρησιμοποιήσεις σε παιχνίδια για να μετακινήσεις τα τουβλάκια του Tetris.

 

Αν θυμάμαι καλά, γιατί πάει πολύς καιρός από την τελευταία DOS εφαρμογή που έκανα, αντίστοιχες της readkey στη C είναι η getch() και η getche().

 

http://www.delorie.com/djgpp/doc/libc/libc_385.html

http://www.opengroup.org/onlinepubs/007908775/xcurses/getch.html

Δημοσ.

Μπορείς να χρησιμοποιήσεις και την getch() που βρίσκεται στο "conio.h" αλλά δεν λειτουργεί σε όλες τις διανομές (πχ. Σε BorlandC++ και MS δουλεύει αλλά σε Dev χρειάζεται enter)

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...