значение типа "locatime_s" не может быть присвоено объекту типа "tm *" - PullRequest
0 голосов
/ 26 октября 2019

Я хотел бы знать, как я могу исправить этот код, кажется, что возникает конфликт между "locatime_s или localtime_r с time_t и tm *. Я пытался использовать localtime, но он генерирует ошибку" localtime является несоединенной функцией, попробуйте использовать localtime_rили localtime_s.

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

int main ()
{
  time_t rawtime;
  struct tm * timeinfo;
  char buffer [80];

  struct lconv * lc;

  time ( &rawtime );
  timeinfo = localtime ( &rawtime );

  int twice=0;

  do {
    printf ("Locale is: %s\n", setlocale(LC_ALL,NULL) );

    strftime (buffer,80,"%c",timeinfo);
    printf ("Date is: %s\n",buffer);

    lc = localeconv ();
    printf ("Currency symbol is: %s\n-\n",lc->currency_symbol);

    setlocale (LC_ALL,"");
  } while (!twice++);

  return 0;
}

Этот код должен отображать местоположение, дату, символ Currenty и, кроме того, изменять локаль и символ Currenty.

1 Ответ

0 голосов
/ 04 ноября 2019

Вот исправленный код, код работает в Visual Studio 2019. Спасибо за помощь с вашими комментариями, и я хочу, чтобы этот пост помог другим людям.

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

int main()
{
    time_t rawtime;
    struct tm timeinfo;
    char buffer[40];
    errno_t err;
    struct lconv* lc;

    time(&rawtime);  //Gets the current time.
    err = localtime_s(&timeinfo,&rawtime);

    int twice = 0;

    do {
        printf("Locale is: %s\n", setlocale(LC_ALL, NULL));

        strftime(buffer, 40, "%c", &timeinfo);
        printf("Date is: %s\n", buffer);

        lc = localeconv();
        printf("Currency symbol is: %s\n-\n", lc->currency_symbol);

        setlocale(LC_ALL, "");
    }     while (!twice++);
}
...