Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SYSTEMTIME: невозможно ввести месяц, Единственное поле, которое не вводится 
V
    Опции темы
efpies
Дата 19.11.2010, 05:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 20.6.2009
Где: СПб

Репутация: нет
Всего: нет



Я уже полчаса бьюсь, но не понимаю, что происходит.

В общем, нужно ввести данные в структуру SYSTEMTIME и что-то дальше делать.

Вот код (да, это всё можно записать компактнее, но не суть):
Цитата

#include <stdio>
#include <conio>
#include <windows>
#include <iostream>

using namespace std;

void main()
{
    SYSTEMTIME sTime0;

    puts("День:\t");
    scanf("%u", &sTime0.wDay);
    puts("Месяц:\t");
    scanf("%u", &sTime0.wMonth);
    puts("Год:\t");
    scanf("%u", &sTime0.wYear);
    puts("Час:\t");
    scanf("%u", &sTime0.wHour);
    puts("Минута:\t");
    scanf("%u", &sTime0.wMinute);
    puts("Секунда:\t");
    scanf("%u", &sTime0.wSecond);

    cout << endl << sTime0.wMonth << endl;
    system("pause");
}

Поле wMonth ВСЕГДА 0. Его невозможно ввести. Только через какую-то другую переменную и присваивание. Спецификаторы менять, cin использовать - не помогает. Что это за бред?
PM MAIL   Вверх
sQu1rr
Дата 19.11.2010, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 3
Всего: 13



А
Код

sTime0.wMonth = 3;
sdt::cout << sTime0.wMonth << std::endl;

Работает?

А если "С++ style" ?
Код

std::cin >> sTime0.wMonth;


А что вы вводите? можно посмотреть?
PM MAIL Skype GTalk   Вверх
casey
Дата 19.11.2010, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 20.12.2006
Где: Украина

Репутация: нет
Всего: 2



Поменяй порядок:

Код

    puts("Год:\t");
    scanf("%u", &(sTime0.wYear));    
    puts("Месяц:\t");
    scanf("%u", &(sTime0.wMonth));
    puts("День:\t");
    scanf("%u", &(sTime0.wDay));
    puts("Час:\t");
    scanf("%u", &(sTime0.wHour));
    puts("Минута:\t");
    scanf("%u", &(sTime0.wMinute));
    puts("Секунда:\t");
    scanf("%u", &(sTime0.wSecond));

PM MAIL WWW   Вверх
casey
Дата 19.11.2010, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 20.12.2006
Где: Украина

Репутация: нет
Всего: 2



А еще можно:

Код

    puts("День:\t");
    scanf("%hu", &sTime0.wDay);
    puts("Месяц:\t");
    scanf("%hu", &sTime0.wMonth);
    puts("Год:\t");
    scanf("%hu", &sTime0.wYear);
    puts("Час:\t");
    scanf("%hu", &sTime0.wHour);
    puts("Минута:\t");
    scanf("%hu", &sTime0.wMinute);
    puts("Секунда:\t");
    scanf("%hu", &sTime0.wSecond);


hu - спецификатор unsigned short

Вобщем это связано с тем, что вводя в 2-байтовое поле wYear 4 байта с помощью  "   scanf("%hu", &sTime0.wYear);  " ты затираешь идущее за ним wMonth
PM MAIL WWW   Вверх
efpies
Дата 19.11.2010, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 20.6.2009
Где: СПб

Репутация: нет
Всего: нет



Цитата(casey @  19.11.2010,  10:21 Найти цитируемый пост)
hu - спецификатор unsigned short

работает) видимо, я рассчитывал на приведение типов. спасибо

странно, что не работает cin, ему ведь не надо никаких спецификаторов указывать
PM MAIL   Вверх
casey
Дата 19.11.2010, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 20.12.2006
Где: Украина

Репутация: нет
Всего: 2



Ну, cin тоже можно заставить работать

Код

    puts("День:\t");
cin >> (WORD)(sTime0.wDay);
    puts("Месяц:\t");
cin >> (WORD)(sTime0.wMonth);
    puts("Год:\t");
cin >> (WORD)(sTime0.wYear);
    puts("Час:\t");
cin >> (WORD)(sTime0.wHour);
    puts("Минута:\t");
cin >> (WORD)(sTime0.wMinute);
    puts("Секунда:\t");
cin >> (WORD)(sTime0.wSecond);

PM MAIL WWW   Вверх
bsa
Дата 19.11.2010, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



casey, а зачем приведение типов? Там и так везде WORD.
PM   Вверх
casey
Дата 19.11.2010, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 20.12.2006
Где: Украина

Репутация: нет
Всего: 2



да, лишнее оно
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0468 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.