Δημοσιεύτηκε: 11 Ιουν 2011, 16:57
από linuxs
migf1 έγραψε:
linuxs έγραψε:Πάντως το fflush ακόμη κι αν δεν δουλεύει απο την στιγμή που καθαρίζει τον buf είναι σωσ΄το σαν σκέψη. Τουλάχιστον αυτό θέλω. Το ίδιο κάνει και το κενό πρίν απο το %d.

Δυστυχώς ανακάλυψα πως οι πρόσφατες εκδόσεις του GCC σταμάτησαν να υποστηρίζουν το fflush(stdin), οπότε αναγκαστικά χρειάζεται να διαβάζουμε ακόμα και απλούς χαρακτήρες με συναρτήσεις όπως η fgets() (ή την gcc-specific getline() που δεν υπάρχει σε άλλους compilers ή με δικιά μας συνάρτηση, όπως η s_get() που έχω ποστάρει σε άλλα νήματα) και απλά να τσεκάρουμε τον 1ο μόνο χαρακτήρα του string. Εξηγώ αναλυτικά σε αυτό εδώ το νήμα

Btw, το κενό διάστημα μέσα στο format string του scanf() δεν καθαρίζει το input buffer, απλά λέει στην scanf() να αγνοήσει τυχόν blanks (spaces, tabs)... αλλά νομίζω δεν τα σβήνει από το input buffer (δεν είμαι 100% σίγουρος). Το scanf () πρέπει να αποφεύγεται γενικώς όπου είναι δυνατόν, είναι... παλιοσυνάρτηση :lol:


Αυτό που μου έμεινε περισσότερο είναι: "παλιοσυνάρτηση" :P χαχαχαχα...

Ναι εννοείτε δεν τον καθαρίζει(φαίνεται και στο manual) κάνει αυτό ακριβώς που λές, απλά μου λειτουργεί σωστά. τουλάχιστον σε αυτό το πρόγραμμα είναι η πιο εύκολη λύση που μάλλον βρέθηκε! ;) Έτσι πιστεύω...