poscaman Δημοσ. 3 Ιουλίου 2007 Δημοσ. 3 Ιουλίου 2007 καλησπερα.θελω να φτιαξω το εξης σε C.θελω ενα προγραμμα (ακτος απ'τα υπολοιπα που θα κανει να εκτυπωνει ενα μην,και μετα απο t χρονο να συνεχιζει το προγραμμα.αυτο πως μπορω να το επιτυχω?
pinball_elf Δημοσ. 3 Ιουλίου 2007 Δημοσ. 3 Ιουλίου 2007 Μπορείς να καλέσεις την sleep(t) όπου t είναι seconds, ή την usleep(t) όπου t είναι microseconds. Και οι δύο αναστέλουν την εκτέλεση του προγράμματος για t χρόνο.
pinball_elf Δημοσ. 3 Ιουλίου 2007 Δημοσ. 3 Ιουλίου 2007 Στο UNIX: #include <unistd.h> Στα Windows: #include <windows.h>
Directx Δημοσ. 3 Ιουλίου 2007 Δημοσ. 3 Ιουλίου 2007 Αν οι παραπάνω ρουτίνες δεν είναι διαθέσιμες τότε μπορείς να χρησιμοποιήσεις το ANSI-C time_t και τις time & difftime του time.h Το παρακάτω πρόγραμμα εκτυπώνει ένα μήνυμα και περιμένει ύστερα 5 δευτερόλεπτα πριν εκτυπώσει το επόμενο. > /* Wait 5 seconds */ #include <stdio.h> #include <time.h> #ifdef __BORLANDC__ #pragma hdrstop #endif #ifdef __BORLANDC__ #pragma argsused #endif int main(int argc, char* argv[]) { time_t ttStart, ttEnd; /* Let's wait for 5 seconds */ printf(" Wait for 5 seconds ... "); ttStart = time(NULL); do{ ttEnd = time(NULL); }while(difftime(ttEnd,ttStart)<5); printf(" Done!\n\n"); printf(" Press Enter to quit ..."); fgetc(stdin); return 0; } Για περισσότερες πληροφορίες σχετικά με την time_t αλλά και την clock_t (για μεγαλύτερη ακρίβεια) κάνε μια αναζήτηση στο φόρουμ με "time_t" καθώς υπάρχουν αρκετά παλαιότερα θέματα επ' αυτού. Καλή συνέχεια!
pinball_elf Δημοσ. 3 Ιουλίου 2007 Δημοσ. 3 Ιουλίου 2007 DirectX εχς την εντύπωση οτι ο κώδικας σου, δεν αναστέλλει την εκτέτελση του προγράμματος, αλλά την συνεχίζει και μάλιστα με ενα ατέρμονο loop που για πέντε δευτερόλεπτα θα εξαντλήσει τα CPU resources.
Directx Δημοσ. 3 Ιουλίου 2007 Δημοσ. 3 Ιουλίου 2007 Φυσικά! Αυτό είναι το Penalty σε αυτές τις περιπτώσεις, απλά είναι ένα παράδειγμα για wait σε C -τίποτε το ιδιαίτερο- αν δεν έχουμε σαφώς καλύτερες "O.S. multitasking friendly functions" . Διαφορετικά αν γράφουμε πχ. κάτω από MS-Windows, τότε για παράδειγμα η Sleep είναι μια καλή και εύκολη λύση αφού τοποθετεί σε passive (suspended) κατάσταση το Process Thread μας , αλλά αν δεν υπάρχει κάτι ανάλογο τότε και αυτό είναι μια κάποια - ενεργοβόρα - λύση Σε άλλες περιπτώσεις μπορεί να αξίζει η χρήση Timers κτλ.. πάντως σίγουρα θα πρέπει να αποφεύγουμε όσο μπορούμε τέτοια loops και ειδικά σε multitasking περιβάλλοντα -τώρα αν δεν μπορούμε τουλάχιστον ας τα κάνουμε Threads και ας πειραματιστούμε με Thread Priorities ώστε αν μπορούμε, να σώσουμε κάτι δίχως να πλήξουμε το Primery Message Loop της βασικής Process Thread μας (αυτά για MS-Windows).
poscaman Δημοσ. 3 Ιουλίου 2007 Μέλος Δημοσ. 3 Ιουλίου 2007 συγγνωμη λαθος.δεν ειχα δει την απαντηση με το windows.h παω να τα δοκιμασω και επανερχομαι
poscaman Δημοσ. 3 Ιουλίου 2007 Μέλος Δημοσ. 3 Ιουλίου 2007 αυτη η @@@@ το dev-c++ μου σπαει τα νευρα! μπορει καποιος να μου εξηγησει γιατι πεταει αυτο sleep undeclared μπλαμπλαμπλαμε τον παρακατω κωδικα? >#include <stdio.h> #include <windows.h> main(void) { printf("πρωτο μηνυμα!"); sleep(50); printf("nhfewoif"); }
pinball_elf Δημοσ. 3 Ιουλίου 2007 Δημοσ. 3 Ιουλίου 2007 >#include <stdio.h> #include <windows.h> main(void) { printf("πρωτο μηνυμα!"); [size="4"][color="Red"]Sleep[/color][/size](50); printf("nhfewoif"); }
poscaman Δημοσ. 3 Ιουλίου 2007 Μέλος Δημοσ. 3 Ιουλίου 2007 #$^^#%~!$!@*&!@)(*)@@@@$#%%^$% ειμαι ζωντοβολο!ευχαριστω
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.