How to make a clock / how to run in the background?

1

I am making a code that runs a clock so that it shows when the time of use of a machine (informed by the user) expires. In the code the clock stays within a while (1), that way it does not have the user to inform the time of use of the machine.

The clock code is this:

        while (1 == 1) {
        Sleep (100);
        segundos++;
        system("cls");

        if (segundos > 59) { minutos++; segundos = 0; }
        if (minutos > 59) { horas++; minutos = 0; }
        if (horas > 23) { dias++; horas = 0; }
        if (mes > 30) { mes++; dias = 0; }

        printf("%d: %d: %d %d %d", mes, dias, horas, minutos, segundos);

}

And the code to tell the time is this:

printf("Digite 1 para maquinas, 2 para pessoas, 3 para estoque, 4 para horarios, 5 para alterar o nome do laboratorio e 6 para finalizar.\n");

scanf("%d", &y);
system("cls");

if(y == 1){
    printf("Vamo comecar o cadastro das maquinas.\n");
    printf("Quantas maquinas deseja cadastrar?\n");
        scanf("%d", &z);
    for(i=0; i<z; i++){
        fflush(stdin);
    printf("Qual o nome da maquina %d?\n", i+1);
        gets(m[c].maquina);

    printf("Qual o tempo de vida util da maquina?\n");
    printf("Expresse o tempo em meses.\n");
        scanf("%d", &m[c].tempo);
        fflush(stdin);
        c++;

    }

    system("cls");

    printf("Muito bem, o cadastramento das maquinas foi um sucesso!\n");
    printf("O programa avisa automaticamente quando o tempo de vida util da maquina expirar.\n");
}
    printf("Informacoes do cadastro de maquinas:\n\n");
    for(i=0; i<c; i++){
        printf("CADASTRO DA MAQUINA %d\n", i+1);
        printf("O nome da maquina eh %s\n", m[i].maquina);
        printf("A vida util da maquina eh de %d meses\n", m[i].tempo);
        if(m[i].maquina == mes){
            printf("A maquina necessita de manuntençao.\n");
        }
        printf("\n");

    }

I would like to know if you have another way to create a clock or if you can make this clock run in the background of the code.

    
asked by anonymous 24.07.2017 / 18:39

1 answer

1

You can use the time function to take the system time, in case the sleep of a stop on the processor would be like doing a loop that does nothing just for delay or to spend machine cycles, on the other side by the time you takes the current system time and does not have to wait for anything, see a basic example of its operation

#include <stdio.h>
#include <time.h>

int main(void){
   time_t tempo;
   struct tm *tempo_formatado;

   //pega o tempo atual em segundos deis de 1970
   tempo = time(NULL);

   //colocamos o tempo na estrutura tm para
   //converter em segundos, min, horas, dias e etc
   tempo_formatado = localtime(&tempo);

   //exibimos pela estrutra
   printf("segundos %d \n",tempo_formatado->tm_sec);
   printf("minutos %d \n",tempo_formatado->tm_min);
   printf("horas %d \n",tempo_formatado->tm_hour); 
}

Inthecaseoftheclockandverysimplejusttakethecurrenttimeinaloop

#include<stdio.h>#include<time.h>intmain(void){time_ttempo;structtm*tempo_formatado;while(1){tempo=time(NULL);tempo_formatado=localtime(&tempo);printf("%d",tempo_formatado->tm_hour);
      printf(":%d",tempo_formatado->tm_min);
      printf(":%d\n",tempo_formatado->tm_sec);  
   }
}

Another thing that is possible is an accountant just seeing the time difference between two teams

#include <stdio.h>
#include <time.h>

int main(void){
   time_t tempo, tempo2;
   tempo = time(NULL);
   sleep(2);
   tempo2 = time(NULL);
   printf("%d \n", tempo2 - tempo);
}

or even compare a team to see if it has passed a certain time

#include <stdio.h>
#include <time.h>

int main(void){
   time_t tempo, tempo2;
   tempo = time(NULL);
   sleep(7);
   tempo2 = time(NULL);
   if(tempo2 > tempo + 5){
       printf("mais de 5 segundo\n");
   }
}

Well there are lots of things to do using the time ^^

    
24.07.2017 / 19:19