Преобразование массива char в структуру времени - PullRequest
0 голосов
/ 26 января 2020

Я использую в своем текущем проекте структуру: для информации о времени

    struct SFileDateTime
    {
        uint8 nYear;    // Years since 1900
        uint8 nMonth;   // Month [1, 12]
        uint8 nDay;     // Day of month [1, 31]
        uint8 nHour;    // Hours [0, 23]
        uint8 nMinute;  // Minutes [0, 59]
        uint8 nSecond;  // Seconds [0, 59]

    };

    typedef unsigned char           uint8;

В некоторых ситуациях я получаю от внешних вызовов только массив символов даты

char [17]   "1998012609260000"  

Теперь у меня есть проблема, чтобы привести массив символов в структуру SFileDateTime. Я попробовал вызов memcpy, но это вызовет крэ sh.

В настоящее время я не понимаю, почему memcpy не будет работать. Есть ли другой способ конвертировать его? Правильно ли выбран актерский состав?

1 Ответ

1 голос
/ 27 января 2020

У вас есть 2 отличных ответа в комментариях под вашим вопросом. Надеюсь, это вам немного поможет.

typedef unsigned char  uint8; //Max size is 255 in decimal ( 1111 1111 )

struct SFileDateTime
{

    uint8 nYear;    // Years since 1900
    uint8 nMonth;   // Month [1, 12]
    uint8 nDay;     // Day of month [1, 31]
    uint8 nHour[20];    // Hours [0, 23]
    uint8 nMinute[];  // Minutes [0, 59]
    uint8 nSecond;  // Seconds [0, 59]

};



int main()
{
SFileDateTime nene;
nene.nYear = 33;        // ASCII code for       !
nene.nMonth = 'M';      // One char which is 77 in ASCII
nene.nDay = 255;        // max number in ASCII which is space
nene.nSecond = 256 ;     // No go||=== warning: large integer 
                        //implicitly truncated to      unsigned type [-Woverflow]|

char one[] = "Hello";
cout<<one<<endl;

nene.nHour[0] = 'A';
nene.nHour[1] = 'b';
nene.nHour[2] = 'b';
nene.nHour[3] = 'y';

return 0;
}

, если вы хотите использовать strcpy, используйте typedef char

U следует преобразовать его в одиночные символы, если вы хотите использовать свою структуру.

Здесь вы можете найти хорошую ссылку: https://en.cppreference.com/w/c/chrono/localtime

...