|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.05.2009, 22:10 | #1 |
Регистрация: 06.05.2009
Сообщений: 3
|
Подскажите, куда деваются переаменные? Visual C++
Всем доброго времени суток. Есть такой вот код (компилятор - VC++6.0)-
char day[1]; char month[1]; char year[1];//переменных несколько больше....но это не суть важно ......... //Тут открываем файл и работаем с ним. //файл текстовый, содержит строку - 01022009 //требуется считать число, месяц и год. FILE *file; file = fopen("data.txt","r"); if (file == 0) {AfxMessageBox("Error opening file!",MB_OK,MB_APPLMODAL);} else { fgets(day,3,file); fgets(month,3,file); fgets(year,5,file); fclose(file); } Ну и так далее. Проблема вот в чем - значения переменных day, month и year теряются в процессе выполнения программы. Понимаю, это странно, но если писать такой код: fgets(day,3,file); AfxMessageBox(day,MB_OK,MB_APPLMODA L); fgets(month,3,file); AfxMessageBox(month,MB_OK,MB_APPLMO DAL); fgets(year,5,file); AfxMessageBox(year,MB_OK,MB_APPLMOD AL); то переменные корректно считываются из файла и выскакивают в окошечке. а вот если я делаю так - fgets(day,3,file); fgets(month,3,file); fgets(year,5,file); //............. какой-то код..... AfxMessageBox(day,MB_OK,MB_APPLMODA L); AfxMessageBox(month,MB_OK,MB_APPLMO DAL); AfxMessageBox(year,MB_OK,MB_APPLMOD AL); то в окошечке вместо реальных значений вылезают какая-то ерунда или обрывки фраз из моего файла (которые после даты). Не понимаю, как такое возможно? переменные не переназначал, вообще с ними ничего не делал. Конечно, понимаю, что можно просто попытаться поработать с файлами по-другому, через потоки, например, но уж очень интересно докопаться до сути, ибо начинаю думать, что во всем виновата злая Мелкософта со своим компилятором.... Спасибо за проявленный интерес к моему посту! |
06.05.2009, 22:19 | #2 |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
fgets(day,3,file); - максимум 3, а размер day при этом - всего 1.
|
06.05.2009, 22:23 | #3 |
Регистрация: 06.05.2009
Сообщений: 3
|
Ну и что? он в переменную day помещает значение "01", в month "02" в year "2009". Не понимаю.
|
06.05.2009, 23:54 | #4 |
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
|
Sh2009, тебе уже Somebody показал что не так
ты считываеш 3 символа в массив размерностью 1 сделай так Код:
|
07.05.2009, 00:34 | #5 |
Регистрация: 06.05.2009
Сообщений: 3
|
Ааа, блин, вот я отжег... Точняк... а я думал, что в переменную month [1] помещается целая строка... Спасибо большое!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
подскажите как пользоваться этим Microsoft Visual C++ 7.1 | tsergey | Софт | 7 | 17.03.2009 14:48 |
Подскажите как програмно установить Шрифт (Visual Basic 6) | С.М.С | Помощь студентам | 8 | 07.01.2009 02:03 |
Куда поступать...? | Timofei | Свободное общение | 3 | 19.06.2008 13:15 |