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

Star_Light έγραψε:παντως πρωτη φορα το ακουω αυτο με την getchar καλα θα μου πεις παλια ημουν ασχετος αλλα ουτε ενας καθηγητης στην σχολη να μην το πει??? ή ενα βιβλιο??? τσκ τσκ τσκ οποία λύπις χαχαχαα

migf1 έγραψε:Star_Light έγραψε:παντως πρωτη φορα το ακουω αυτο με την getchar καλα θα μου πεις παλια ημουν ασχετος αλλα ουτε ενας καθηγητης στην σχολη να μην το πει??? ή ενα βιβλιο??? τσκ τσκ τσκ οποία λύπις χαχαχαα
Είναι πολλά πράγματα που μαθαίνονται στην πράξη, γιατί η κάθε πλατφόρμα υλοποιεί εσωτερικά με διαφορετικό τρόπο τα standards που περιγράφει η κάθε γλώσσα. Π.χ. αυτό που λέμε με την fflush(stdin) δεν είναι μόνο θέμα του compiler αλλά και του shell της κάθε πλατφόρμας και του τερματικού. Μπορείς να απενεργοποιήσεις πλήρως αν θες το line-buffering στο tty τερματικό σου, οπότε δεν θα περιμένει να πατήσεις ENTER στο command-line πριν αρχίσει να διαβάζει την κύρια είσοδο... θα διαβάζει απευθείας τον κάθε χαρακτήρα με το που τον πληκτρολογείς (αυτό έχει βέβαια άλλα προβλήματα, π.χ. κάνει πολύ πιο δύσκολο το να διορθώσεις τυπογραφικά λάθη στην είσοδο, πριν πατήσεις το ENTER).
Σε γενικές γραμμές, όπως σε όλα τα πράγματα έτσι και στον προγραμματισμό ισχύει πως η θεωρία απέχει από την πράξη. Για αυτό είναι κρίσιμης σημασίας να μη μένει κανείς μονάχα στη θεωρία αλλά να δοκιμάζει πράματα και στην πράξη. Ή να έχει καθοδηγητές που έχουν εμπειρία και στην πράξη


migf1 έγραψε:Όχι, οφείλεται στο line-buffering που χρησιμοποιούν όλες οι στάνταρ συναρτήσεις εισόδου της C. Σου έχω δώσει όμως ήδη 2 τρόπους να διαβάζεις ότι θες από την κύρια είσοδο χωρίς να χρησιμοποιείς την getchar, γιατί έχεις κολλήσει σε αυτήν; Ξεκόλλα από την getchar (και από την scanf


stamatiou έγραψε:Η τροποποίηση για τις 2 ασκήσεις :
[snip]


int main( void )
{
char c;
int y,z;
long int l1,l2;
float f1, f2;
-> char buffer[BUFFER_SIZE] = "";
printf("Dwste enan xarakthra: ");
-> sscanf(buffer,"%c",&c);
-> get_char( &c );
printf("dwsate ton xarakthra: %c\n", c);
