(Korzystam z Visual Studio)
Witajcie, mimo banalnego problemu, o którym się pewnie domyślasz z tematu nie jest to takie proste (dla mnie bynajmniej). Potrzebuję przekonwertować czas z sekund time_t (sekundy) na normalną datę z miesiącem, rokiem, dniem itd. Oczywiście jest wieeele przykładów w sieci, również w tym serwisie. Pozwólcie, że przytoczę fragment kodu z dokumentacji tutaj:
#include <ctime>
#include <cstdio>
int main()
{
time_t czas = 0;
printf( "Czas zerowy: %s", ctime( & czas ) );
time( & czas );
printf( "Czas lokalny: %s", ctime( & czas ) );
return 0;
}
Pomijam to, że jest to napisane w języku C. Problem w tym, że ten, jak i inny przykład... nie działa. oto błąd, który się pojawia:
Błąd 1 error C4996: 'ctime': This function or variable may be unsafe. Consider using ctime_s instead. To disable deprecation, _CRT_SECURE_NO_WARNINGS. See online help for details.
Podobny problem miałem kiedyś z użyciem
getch()
, które Microsoft zamieniło sobie na
_getch()
. W tym wypadku również zrobiłem to co zasugerowano mi w błędzie, czyli zamieniłem
ctime
na
ctime_s
, a co jak już zamieniłem?
1 IntelliSense: argument of type "time_t *" is incompatible with parameter of type "char *"
Błąd 2 error C2660: "ctime_s" : funkcja przyjmuje 3 argumenty
Werdykt? Nie mogę użyć ctime(), bo wyrzuca błąd, a nowa funkcja, którą mi zasugerowali przyjmuje 3 argumenty zamiast 1. Od razu dodam, że użycie tego
_CRT_SECURE_NO_WARNINGS
odpada (chyba, że to jedyne wyjście, lecz po wpisaniu tej linijki wyskakuje, że to jest niezdefiniowane, więc nie wiem jak tego użyć). Nawet na stronie cplusplus.com nic nie ma o
ctime_s
, więc nie wiem jakie argumenty przyjmuje ta funkcja. Może jest inna funkcja konwertujaca. Zwykle odpowiedzi szukam w dokumentacjach, lecz co zrobić, gdy żaden przykład z dokumentacjii nie jest poprawny? Liczę na waszą pomoc, może ktoś na tym świecie jeszcze korzysta z Visual Studio i niech to sprawdzi u siebie. (instaluję wszystkie aktualizacje na bieżąco)