Форум программистов, компьютерный форум CyberForum.ru

Почему переменной month присваивает значение, допустим 05, а day 2605 - C++

Восстановить пароль Регистрация
 
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,427
26.05.2011, 01:15     Почему переменной month присваивает значение, допустим 05, а day 2605 #1
Есть фрагмент кода:

C++
1
2
3
4
5
6
7
8
9
10
11
int day, month, year;
_strdate(dateStr);
for (int i=0; i<9; i++)
    cout<<dateStr[i];
char m[2]= {dateStr[0], dateStr[1]};
char d[2]= {dateStr[3], dateStr[4]};
char y[2]= {dateStr[6], dateStr[7]};
month= atoi(m);
day= atoi(d);
year= atoi(y);
cout<<endl<<month<<" "<<day<<" "<<year<<endl;
Почему переменной month присваивает значение, допустим 05, а day 2605 (хотелось бы 26)?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2011, 01:15     Почему переменной month присваивает значение, допустим 05, а day 2605
Посмотрите здесь:

C++ Присвоить целой переменной day целое значение 1,2, …, 6 или 7
Написать инструкцию, которая присваивает целой переменной случайное число C++
C++ выражение, которое присваивает переменной Y остаток
C++ Не могу понять почему не присваивает?(
C++ переменной Т присваивает значение
Почему переменной присваивается произвольное значение("мусор")? C++
Запишите инструкцию, которая присваивает переменной х значение -1,5 C++
Почему изменяется значение переменной между функциями класса? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Me11eR
 Аватар для Me11eR
10 / 10 / 0
Регистрация: 08.07.2009
Сообщений: 34
26.05.2011, 01:55     Почему переменной month присваивает значение, допустим 05, а day 2605 #2
Странно, посмотрел, да, както непонятно это работает, ковыряю

..

C++
1
2
3
4
y[0]=dateStr[6];
y[1]=dateStr[7];
 
cout << endl << y;
выдает
112605

как так. курю.

...

C++
1
2
3
4
y[0]=dateStr[6];
y[1]=dateStr[7];
 
cout << endl << y << endl << dateStr[6] << endl << dateStr[7];
112605
1
1
разрыв шаблона, где суть

Добавлено через 14 минут
так я и думал, atoi выходил за массив без нуля и лез на след переменную, но где ерроры?

C++
1
2
3
4
5
6
7
8
char m[]= {dateStr[0], dateStr[1] , '\0'};
char d[]= {dateStr[3], dateStr[4] , '\0'};
char y[]= {dateStr[6], dateStr[7] , '\0'};
 
month= atoi(m);
day= atoi(d);
year= atoi(y);
cout<<endl<<month<<" "<<day<<" "<<year<<endl;
так работает
magirus
26.05.2011, 07:20     Почему переменной month присваивает значение, допустим 05, а day 2605
  #3
 Комментарий модератора 
MrGluck, называйте темы информативно.
Yandex
Объявления
26.05.2011, 07:20     Почему переменной month присваивает значение, допустим 05, а day 2605
Ответ Создать тему
Опции темы

Текущее время: 17:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru