Некоторые этапы доработки:
Этап 1: исправьте ваш код.
struct tme {
char * intime; // You had a type mismatch
} e;
int main () { // Don't use void main()
char timeStr [9];
_strtime( timeStr );
e.intime=timeStr;
printf( "The current time is %s \n", timeStr);
}
Здесь есть проблема: ваш struct tme
полагается на внешний мир, чтобы сделать все для него и сделать это правильно. Что если мы хотим повторно использовать timeStr
в основном? Что если вы используете эту структуру в функции, отличной от main
, и установите e.intime
в переменную, выходящую за пределы области видимости?
Уточнение: struct tme
должен владеть временным буфером.
struct tme {
char intime[9]; // Put the buffer here, not in main.
} e;
int main () {
_strtime( e.intime );
printf( "The current time is %s \n", e.intime);
}
У нас все еще есть проблема. Этот буфер может быть изменен кем угодно, а структура является просто пассивным сосудом.
Уточнение: скрытие данных и активация объекта.
struct tme {
const char * set_time () { _strtime (intime); return intime; }
const char * get_time () const { return intime; }
private:
char intime[9];
};
int main () {
printf( "The current time is %s \n", e.set_time());
}