Wkudk

Sådan forsinkes i C

Har du nogensinde ønsker at lave en C-program vente på en bestemt tid?
Du kan oprette en teknik til at give tid til at sætte kryds væk, for eksempel: når viser en splash side (en meddelelse eller hint) til et spil.
Okay, her er nogle måder at gøre programmet "stå stille" læs videre...

Steps

Sådan forsinkes i C. Gør din CPU arbejde for et stykke tid uden at producere nogen mærkbar begivenhed.
Sådan forsinkes i C. Gør din CPU arbejde for et stykke tid uden at producere nogen mærkbar begivenhed.
  1. 1
    Gør din CPU arbejde for et stykke tid uden at producere nogen mærkbar begivenhed.
  2. 2
    Har nogen anden betjening under denne forsinkelse, med henblik på at skabe en enkel tidsforsinkelse.

Den "for-loop"-teknik

  1. 1
    Brug en typisk "for" loop efterfulgt af et null erklæring at gennemføre tidsforsinkelse.
  2. 2
    Skriv som følger, til et eksempel:
    • for (i = 1, i <100; i + +);

</ 100> # * Redegørelsen efterfølges af "," gør computeren kører løkken 100 gange uden nogen mærkbar begivenhed. Det bare skaber en tidsforsinkelse.

Den "sleep ()" teknik

  1. 1
    Brug søvn () funktionen kaldes søvn (int ms) erklærede i <time.H> hvilket gør programmet ventetiden for tiden i specificerede millisekunder.
  2. 2
    Medtag følgende linie i dit program før "int main ()":
    • # Include <TIME.H>
  3. 3
    Indsæt, hvor du har brug for din program til at lave en forsinkelse:
    • sleep (1000);
    • Ændr "1000" til det antal millisekunder du vil vente (for eksempel, hvis du ønsker at lave en 2 sekunders forsinkelse, erstatte det med "2000",.
    • Tip: På nogle systemer værdien kan henvise til sekunder, i stedet for millisekunder. Så undertiden 1000 er ikke et sekund, men i virkeligheden, 1000 sekunder.

Sample code

Et program, der venter en given mængde sekunder:

 # Include <stdio.h>
 # Include <dos.h>
 
 int main ()
 {
 int del / / Forsinkelsesperioden
 printf ("Indtast forsinkelsestiden (i sekunder):");
 scanf ("% i", og del); 
 del * = 1000 / / Multiplicer det med 1000 for at konvertere til millisekunder
 Delay (del) / / Delay.
 printf ("Done.");
 tilbagevenden 0;
 }


Et program, der tæller ned fra 10 til 0:

 # Include <stdio.h>
 # Include <TIME.H>
 
 int main ()
 {
 int i;
 for (i = 10; i> = 0; i -)
 {
 printf ("% i \ n", i) / / Skriv den nuværende "nedtællingen" nummer
 Delay (1000) / / Vent et sekund
 }
 tilbagevenden 0;
 }

Tips

  • En millisekund er 1/1000 af et sekund.
  • Ovenstående logik kan gennemføres ved hjælp af enhver looping struktur efterfulgt af en null erklæring-"," som ved hjælp af mens eller do-while løkker.

Advarsler

  • Denne teknik er generelt ubrugelige i noget udover en triviel program. Generelt skal du bruge timere eller en event-driven tilgang til at gennemføre denne. Ellers vil programmet blive reagerer under forsinkelsen tid, og det er ikke altid en god ting. Udover, at vælge N i din loop, hvis det afhænger af instruktion udførelse, kan have overraskende resultater. Tilsyneladende den oprindelige forfatter har aldrig hørt om en optimering compiler... det kan optimere væk hele loop, hvis det rent faktisk gør noget!
  • Bemærk, at når du bruger for-loop teknik, du måske har brug for en meget stor spændvidde for jeg, fordi en tom sætning udføres meget hurtigt. Sådanne store tal måske ikke passer i et heltal type.
  • Hvis du bruger for-loop, kan compileren optimere koden, og fordi løkken gør intet, fjerne det. Dette sker ikke, når du bruger Delay ().