Wkuno

Hvordan forsinkelse i C

Har du noen gang ønsker å gjøre et C-program vente på en viss tid?
Du kan sette opp en teknikk for å gi tid til å huke bort, for eksempel: når du viser en splash-side (en melding eller hint) for et spill.
Ok, her er noen måter å gjøre programmet "stå stille", les videre...

Trinn

Hvordan forsinkelse i C. Gjør din CPU arbeid i noen tid uten å produsere noen merkbar hendelse.
Hvordan forsinkelse i C. Gjør din CPU arbeid i noen tid uten å produsere noen merkbar hendelse.
  1. 1
    Gjør din CPU arbeid i noen tid uten å produsere noen merkbar hendelse.
  2. 2
    Har ingen annen drift i løpet av denne forsinkelsen, for å lage en enkel tidsforsinkelse.

Den "for-loop" teknikken

  1. 1
    Bruk en typisk "for" loop etterfulgt av en null setningen for å implementere tidsforsinkelse.
  2. 2
    Skriv som følger, for eksempel:
    • for (i = 1; i <100; i + +);

</ 100> # * Uttalelsen etterfulgt av "," gjør datamaskinen kjøre løkken 100 ganger uten noen merkbar hendelse. Det skaper bare en tidsforsinkelse.

Den "sleep ()" teknikk

  1. 1
    Bruk sove () funksjonen kalles søvn (int ms) erklærte i <TID.H> som gjør programmet vente for tiden i millisekunder spesifisert.
  2. 2
    Ta med følgende linje i programmet før "int main ()":
    • # Include <TIME.H>
  3. 3
    Sett inn, der du trenger programmet for å gjøre en forsinkelse:
    • søvn (1000);
    • Endre "1000" til antall millisekunder du ønsker å vente (for eksempel hvis du ønsker å lage en to sekunders forsinkelse, erstatte den med 2000.
    • Tips: På noen systemer verdien kan referere til sekunder, i stedet for millisekunder. Så noen ganger 1000 er ikke ett sekund, men i virkeligheten 1000 sekunder.

Eksempelkode

Et program som venter en gitt mengde sekunder:

  # Include <stdio.h>  # Include <dos.h>    int main ()  {  int del; / / Forsinkelsesperioden  printf ("Skriv inn forsinkelsestid (i sekunder):");  scanf ("% i", og del);   del * = 1000 / / Multipliser det med 1000 å konvertere til millisekunder  Delay (del), / / Delay.  printf ("Ferdig.");  returnere 0;  } 


Et program som teller 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 dagens "nedtellingen" nummer  Delay (1000), / / Vent litt  }  returnere 0;  } 

Tips

  • Et millisekund er 1/1000 av et sekund.
  • Listen logikk kan implementeres ved hjelp av noen looping struktur etterfulgt av en null statement-",", som ved hjelp stund eller gjør-mens sløyfer.

Advarsler

  • Denne teknikken er generelt ubrukelig i noe annet enn et trivielt program. Generelt, bruke tidtakerne eller en hendelse-drevet tilnærming til å gjennomføre dette. Ellers vil programmet slutte å svare i løpet av forsinkelsen, og det er ikke alltid en god ting. Dessuten velge N i løkke, hvis det avhenger instruksjon gjennomføring, kan ha overraskende resultater. Angivelig den opprinnelige forfatteren aldri har hørt om en optimalisering av kompilatoren... det kan optimalisere bort hele løkken hvis det faktisk gjør ingenting!
  • Vær oppmerksom på at når du bruker for-løkke teknikk, må du kanskje en veldig stor spennvidde for jeg, fordi et tomt setningen utføres svært raskt. Slike store tallene kanskje ikke passer i et heltall type.
  • Hvis du bruker den for-loop, kan kompilatoren optimalisere koden, og fordi løkken gjør ingenting, fjern det. Dette skjer ikke når du bruker Delay ().