time.h aktualizowanie 1 daty zmienia 2 date

0

Witam jedna date mam stałą np ustawiona na tego samego dnia o godzinie 22:30:44 a druga data powinna aktualizowac sie na bieżąco
a wychodzi na to ze po wywolaniu funkcji aktualizuj() aktualizuja sie 2.
z gory dziekuje za pomoc
pozdrawiam
Oto kod:

 #include <stdio.h>
#include <time.h>
struct tm * aktualny();
int porownaj(struct tm *c1,struct tm *c2);
int main()
{
  struct tm * timeinfo,* timeinfo2;

  timeinfo2=aktualny();

  printf("Podaj godzine dzwonka :");scanf("%d",&timeinfo2->tm_hour);
  printf("Podaj godzine minute :");scanf("%d",&timeinfo2->tm_min);
  printf("Podaj godzine sekunde :");scanf("%d",&timeinfo2->tm_sec);
  mktime(timeinfo2);
  printf("czas drugi : %02d:%02d:%02d\n",timeinfo2->tm_hour,timeinfo2->tm_min,timeinfo2->tm_sec);

  while(1)
  {
        timeinfo=aktualny();
        printf("(czas pierwszy : )%02d:%02d:%02d dzwonek o godzinie (czas drugi : )%02d:%02d:%02d\r",timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec,timeinfo2->tm_hour,timeinfo2->tm_min,timeinfo2->tm_sec);
        if(porownaj(timeinfo,timeinfo2)==1)
        {
            printf("\nDZWONEK!!");
            break;
        }
  }

  return 0;
}
struct tm * aktualny()
{
    time_t rawtime;
    struct tm * timeinfo;
    time ( &rawtime );
    timeinfo = localtime ( &rawtime );
    return timeinfo;
}
int porownaj(struct tm *c1,struct tm *c2)
{
    if(c1->tm_hour==c2->tm_hour && c1->tm_hour==c2->tm_hour && c1->tm_hour==c2->tm_hour) return 1;
    else return 0;
}

WYNIK PROGRAMU W ZALACZNIKU:

0

no tak ale nawet jak dasz godzine 18 to potem zaktualizuje sie na ta co jest naprawde i beda 2 takie same wiec zawsze beda rowne

0

problem juz rozwiazany prosze o zamkniecie tematu

#include <stdio.h>
#include <time.h>
////////////////////////////////////////////////////
struct czas
{
    int sec;
    int min;
    int hour;
    int mday;
    int mon;
    int year;
    int wday;
    int yday;
    int isdst;
};
//////////////////FUNKCJE_POGRAMU/////////////////////
int compare(struct tm *c1,struct czas c2);
struct tm * current_time();
void set_time(struct czas czas1,struct tm *czas2);
//////////////////////////////////////////////////////
int main()
{
  struct tm * timeinfo;
  struct czas timeinfo2;
  int d,f;

  timeinfo=current_time();
  set_time(timeinfo2,timeinfo);

  printf("Set alarm clock time\n");
  printf("Hour :");scanf("%d",&timeinfo2.hour);
  printf("Minute :");scanf("%d",&timeinfo2.min);
  printf("Second :");scanf("%d",&timeinfo2.sec);

  while(1)
  {
        timeinfo=current_time();
        printf("Current time:%02d:%02d:%02d\tAlarm clock time: %02d:%02d:%02d\r",timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec,timeinfo2.hour,timeinfo2.min,timeinfo2.sec);
        if(compare(timeinfo,timeinfo2)==1)
        {
            d=time(NULL);
            f=d+5;
            while(d!=f)
            {
                d=time(NULL);
                fprintf(stderr,"0");
            }
            printf("\n");
            timeinfo2.sec+=10;
        }
  }

  return 0;
}
////////////////////////////////////////////////////////////////////////////////
struct tm * current_time()
{
    time_t rawtime;
    struct tm * timeinfo;
    time ( &rawtime );
    timeinfo = localtime (&rawtime );
    return timeinfo;
}
///////////////////////////////////////////////////////////////////////////////////
int compare(struct tm *c1,struct czas c2)
{
    if(c1->tm_hour==c2.hour && c1->tm_min==c2.min && c1->tm_sec==c2.sec) return 1;
    else return 0;
}
////////////////////////////////////////////////////////////////////////////////////
void set_time(struct czas czas1,struct tm *czas2)
{
    czas1.mon=czas2->tm_mon;
    czas1.sec=czas2->tm_sec;
    czas1.min=czas2->tm_min;
    czas1.mday=czas2->tm_mday;
    czas1.year=czas2->tm_year;
    czas1.wday=czas2->tm_wday;
    czas1.yday=czas2->tm_yday;
    czas1.hour=czas2->tm_hour;
    czas1.isdst=czas2->tm_isdst;
}
/////////////////////////////////////////////////////////////////////////////////// 
0

Pytanie tylko po co to wszystko? Twoje funkcje robią dokładnie to samo co funkcje biblioteczne... są w zasadzie takimi wrapperami tylko po co komu wrapper w C do funkcji bibliotecznych C ? :D

Zresztą zobacz:

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

int main()
{
  time_t alarm_time = time(NULL);
  struct tm alarm_timeinfo;
  memcpy(&alarm_timeinfo, localtime(&alarm_time), sizeof(alarm_timeinfo));

  printf("Set alarm clock time\n");
  printf("Hour :");scanf("%d",&alarm_timeinfo.tm_hour);
  printf("Minute :");scanf("%d",&alarm_timeinfo.tm_min);
  printf("Second :");scanf("%d",&alarm_timeinfo.tm_sec);

  alarm_time = mktime(&alarm_timeinfo);
 
  while(1)
  {
        time_t current_time = time(NULL);
        printf("Current time: %s", ctime(&current_time));
        if(current_time == alarm_time)
        {
            time_t d = current_time + 5;
            while(d != time(NULL)) fputs(stderr,"0");
            printf("\n");
            
            alarm_time += 10;
        }
  }
 
  return 0;
}

I koniecznie poczytaj:
http://www.cplusplus.com/reference/clibrary/ctime/

1 użytkowników online, w tym zalogowanych: 0, gości: 1