0 / 0 / 0
Регистрация: 26.04.2013
Сообщений: 5
|
|||||||||||
1 | |||||||||||
fstream и for15.05.2013, 23:42. Показов 1784. Ответов 24
Метки нет (Все метки)
Здрасте.
Собственно, не могу понять, по какой причине не работает вот такой вот код, хотя по идее должен работать, или я ошибаюсь?
работаю в visual studio 2010
0
|
15.05.2013, 23:42 | |
Ответы с готовыми решениями:
24
C++ fstream fstream fstream fstream с++ |
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
|
||||||
15.05.2013, 23:49 | 2 | |||||
а чем так не устраивает?
0
|
metaluga145
|
15.05.2013, 23:51
#3
|
Не по теме: Olivеr, вопрос не в том как сделать,а почему именно так,как написано, не работает
0
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
15.05.2013, 23:52 | 4 |
И тот и тот код приводит к зацикливанию. Потому что в файле может не быть '@'.
2-й Вариант может иногда (смотря как звезды встанут) работать если переменная char c не будет проинициализирована ее значение возьмется из мусора и может совпасть с '@'.
0
|
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
|
|
15.05.2013, 23:59 | 5 |
stima, но там с точно инициализирована.
Добавлено через 5 минут markusblackmann, странно,но у меня работает!могу показать скрин.
0
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
16.05.2013, 00:01 | 6 |
0
|
0 / 0 / 0
Регистрация: 26.04.2013
Сообщений: 5
|
|
16.05.2013, 00:03 [ТС] | 7 |
и первый пример кода, и второй пример кода запускался в одном и том же проекте, где был файл "somefile.txt", и во втором примере все отлично работало. следовательно, в файле есть символ '@'. И значение не берется из "мусора" только потому, что в первом примере переменная определена, если Вы посмотрите внимательней, а во втором нет смысла его определять.
0
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
16.05.2013, 00:06 | 8 |
Тогда файл в студию. Магии нету. Есть просто закулисье. Или Вы привили не весь код, и та часто кода играете роль или в файле при тесте нету @.
0
|
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
|
|
16.05.2013, 00:06 | 9 |
В общем, код рабочий. Попробуйте подебажить построчно, посмотреть что да как
0
|
0 / 0 / 0
Регистрация: 26.04.2013
Сообщений: 5
|
||||||
16.05.2013, 00:14 [ТС] | 10 | |||||
может это происки компилятора? Оо какой у Вас?
Добавлено через 3 минуты файл в студию? та пожалуйста, любой текстовый файл, где присутствует хоть один символ @ сойдет =) и весь код могу привести:
вообщем, подвох таится в злых гремлинах, не иначе.
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
16.05.2013, 00:15 | 11 |
код работающий. бесконечного цикла нет.
есть вариант что файл не найден и file.good() == false с самого начала. перед циклом проверку сделайте, файл точно открывается и в нем точно есть нужный символ?
0
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
16.05.2013, 00:15 | 12 |
Еще раз. И тот и тот вариант уйдут на бесконечность если в файле НЕТУ '@'. А так варианты идентичны.
0
|
0 / 0 / 0
Регистрация: 26.04.2013
Сообщений: 5
|
|
16.05.2013, 00:16 [ТС] | 13 |
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
16.05.2013, 00:26 | 14 | |||||
ну если они в одном и том же проекте - то пожалуй да. это все странно.
выводите на печать тогда, чтобы хоть что-то было видно что там читается. у меня работает как надо, но вот глючок в дебагере студийном обнаружился:
0
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
16.05.2013, 00:30 | 15 |
2DU, деббагер прав. При итерации по циклу вы заместили переменную.
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
16.05.2013, 00:31 | 16 |
Не, в этом месте должен быть '!'. На время действия цикла создаётся новая локальная переменная с тем же именем, а по окончании цикла она уничтожается, а внешняя переменная осталась нетронутой, всё верно. Вот если бы из заголовка цикла убрать слово char...
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
16.05.2013, 00:32 | 17 |
он не прав. в конце цикла стоит ;
значит в точке, где я смотрю переменную та, которая была в цикле уже умерла. выводится при этом '!'
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
16.05.2013, 00:34 | 18 |
А, мы оба комментарий наоборот прочитали
0
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
16.05.2013, 00:34 | 19 |
нет он прав. В тот момент когда вы смотрите значение с, вы итерируетесь по циклу.
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
16.05.2013, 00:42 | 20 | |||||
откуда вы знаете, когда я смотрю? у меня бряк стоит в точке вывода. а там переменная из цикла уже мертва.
и даже если бы она была живой - это все равно глюк, т.к. правильный дебагер должен понять что та с, на которую я смотрю - это не переменная из цикла. Добавлено через 5 минут вот маленький апдейт
смотрим дебагом чему равно i и чему с в 12 студии та же фигня
0
|
16.05.2013, 00:42 | |
16.05.2013, 00:42 | |
Помогаю со студенческими работами здесь
20
Fstream fstream Fstream fstream Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |