¿Cómo manipulo los valores de un puntero a una estructura?

Es una función que crea eventos basados ​​en los valores de tiempo que ingresa el usuario, luego convierte el valor a Unix Epoch mktimey los almacena en un archivo. Probé y descubrí que todo lo demás funciona bien hasta que llegamos a la sección donde el usuario ingresa los valores. Parece que no estoy usando el puntero evental struct tmpozo, así que necesito ayuda para hacerlo bien.

int EventCreator(){
      FILE *fptr = fopen("Events_Calendar.txt", "a+");
      struct tm *event;
      printf("Enter the values of the hour minute day month year in digits and this specific format meaning using spaces to seperate them");
      printf("\n hr min day mon yr\n>");
      scanf("%d %d %d %d %d", event->tm_hour, event->tm_min, event->tm_mday, event->tm_mon, event->tm_year);
      time_t NineteenEvent = mktime(event);
      printf("%ld", NineteenEvent);
      fprintf(fptr, "%ld\n", NineteenEvent);
      fclose(fptr); 
      }
Answer

Ha declarado un puntero a struct tmpero no ha asignado memoria para un struct tm. Le sugiero que haga eventuna variable automática en su lugar.

Ejemplo:

void EventCreator() { // make the function `void` since you do not return anything
    FILE *fptr = fopen("Events_Calendar.txt", "a+");
    if (fptr) {                             // check that opening the file succeeds

        // `event` is now not a pointer and set `tm_isdst` to a negative value
        // to make `mktime` guess if DST is in effect:
        struct tm event = {.tm_isdst = -1};

        printf(
            "Enter the values of the hour minute day month year in digits and "
            "this specific format meaning using spaces to seperate them\n"
            "hr min day mon yr\n>");

        // %d requires an `int*` but you've supplied it with `int`.
        // (also, check that scanf succeeds)
        if (scanf("%d %d %d %d %d", &event.tm_hour, &event.tm_min,
                  &event.tm_mday, &event.tm_mon, &event.tm_year) == 5) {

            event.tm_year -= 1900; // years since 1900
            --event.tm_mon;        // 0-11
            time_t NineteenEvent = mktime(&event); // take its address here
            printf("%ld", NineteenEvent);
            fprintf(fptr, "%ld\n", NineteenEvent);
            fclose(fptr);
        }
    }
}