Como atrasar a execução do programa em C

Autor: Joan Hall
Data De Criação: 28 Fevereiro 2021
Data De Atualização: 1 Julho 2024
Anonim
cannot execute c users appdata local temp
Vídeo: cannot execute c users appdata local temp

Contente

Você já quis criar um programa C que espera por um determinado período de tempo? Você pode personalizar a forma de dar o tempo "voar", por exemplo: ao mostrar uma página pop-up (notificação ou dica) do jogo. ... OK, aqui estão algumas maneiras de criar um programa "ficar parado", continue a ler ...

Passos

  1. 1 Deixe seu processador funcionar por um tempo sem causar um evento observável.
  2. 2 Não execute nenhuma outra operação durante este atraso para criar um atraso de tempo simples.

Método 1 de 2: técnica For-loop

  1. 1 Use um típico loop "for" seguido por uma instrução vazia para implementar um atraso.
  2. 2 Escreva o seguinte, por exemplo:
    • para (i = 1; i100; i ++);
    • O operador que segue o ";" força o computador a fazer um loop 100 vezes sem um evento perceptível. Isso apenas cria um atraso de tempo.

Método 2 de 2: A técnica "sleep ()"

  1. 1 Use sleep (). A função é chamada sleep (int ms), declarada em TIME.H>, o que faz o programa esperar por um período de tempo especificado em milissegundos.
  2. 2 Inclua a seguinte linha em seu programa antes de int main ():
    • #include TIME.H>
  3. 3 Cole onde for necessário para atrasar o programa:
    • sono (1000);
    • Altere "1000" para o número de milissegundos que deseja esperar (por exemplo, se quiser fazer um atraso de 2 segundos, substitua-o por "2000".
    • Dica: Em alguns sistemas, o valor pode ser especificado em segundos em vez de milissegundos. Portanto, às vezes 1000 não é 1 segundo, mas na verdade 1000 segundos.

Código de amostra

Um programa que espera um certo número de segundos:



#include stdio.h> #include dos.h> int main () {int del; // O período de atraso printf ("Insira o tempo de atraso (em segundos):"); scanf ("% i" ,? del); del * = 1000; // Multiplique por 1000 para converter em milissegundos Delay (del); // Atraso. printf ("Concluído."); return 0; }


Um programa com contagem regressiva de 10 a 0:


#include STDIO.H> #include TIME.H> int main () {int i; para (i = 10; i> = 0; i--) {printf ("% i n", i); // Escreva o número atual de 'contagem regressiva' Delay (1000); // Espere um segundo} return 0; }

Pontas

  • Um milissegundo é 1/1000 de um segundo.
  • O algoritmo acima pode ser implementado usando qualquer estrutura de loop seguida pelo operador nulo - "; como usando loops while ou do-while.

Avisos

  • Esse método geralmente é inútil para qualquer coisa que não seja um programa trivial. Em geral, use cronômetros ou uma abordagem orientada a eventos para fazer isso. Caso contrário, o programa deixará de responder durante o tempo de atraso e isso nem sempre é bom. Além disso, escolher N em um loop, se depender da execução de comandos, pode ter resultados inesperados. Aparentemente, o autor original nunca ouviu falar de um compilador de otimização ... ele pode otimizar um loop inteiro se não fizer nada!
  • Observe que, ao usar o método "for-loop", pode levar um intervalo muito grande para i, uma vez que uma instrução vazia é muito rápida. Esses números grandes podem não caber em um tipo inteiro.
  • Se você usar um loop for, o compilador pode otimizar o código e, como o loop não faz nada, remova-o. Isso não acontece ao usar Delay ().