Название: freopen и работа с ним Отправлено: Remuless от Июнь 26, 2013, 19:25 добрый день.
возник следующий вопрос, с которым не могу никак разобраться: открываю файл при помощи freopen: freopen("input1.txt", "r", stdin); читаю из него все что нужно. после этого мне необходимо открыть следующий файл на чтение. и тут возникает моя проблема: не важно, пытаюсь я просто открыть новый файл в этот же поток, или же сначала закрываю его при помощи fclose(stdin) и затем снова открываю. чтение из второго и последующих файлов не происходит. подскажите, как можно исправить данную проблему? Название: Re: freopen и работа с ним Отправлено: Bepec от Июнь 26, 2013, 19:58 В далёкой далёкой стране жил мудрец, знающий обо всём на свете, в том числе и об программах. И приходили к нему люди и спрашивали. Всем он отвечал одно и то же. Никто не получал ответа, а получали лишь пару слов, одинаковых для всех. И вот однажды человек не просто услышал слова, но и выполнил их. И тогда получил он ответ на свой вопрос, подробный и с комментариями. А та пара слов передавалась детям этого человека и внукам. И знаменем этого рода стали слова "приложи код и получишь ответ".
Название: Re: freopen и работа с ним Отправлено: Remuless от Июнь 26, 2013, 20:07 Код: freopen("input1.txt", "r", stdin); Название: Re: freopen и работа с ним Отправлено: kambala от Июнь 26, 2013, 21:27 может дело в смешивании сишных и плюсовых файловых потоков?
Название: Re: freopen и работа с ним Отправлено: Remuless от Июнь 26, 2013, 21:30 может дело в смешивании сишных и плюсовых файловых потоков? ну первый то файл он читает нормально? и, если проблема в этом, то ваше предложение, как исправить проблему? Название: Re: freopen и работа с ним Отправлено: Old от Июнь 26, 2013, 21:40 Попробуйте проверять возвращаемое значение и errno в случае ошибки.
Название: Re: freopen и работа с ним Отправлено: kambala от Июнь 26, 2013, 23:34 и, если проблема в этом, то ваше предложение, как исправить проблему? читать с помощью fread/fscanf, а не cin.хотя вот тут написано, что проблем со смешиванием не должно быть: http://stackoverflow.com/questions/5257509/freopen-equivalent-for-c-streams Название: Re: freopen и работа с ним Отправлено: Fat-Zer от Июнь 27, 2013, 02:50 во-первых, fclose() лишние [но не очень существенно]
во-вторых, достижение eof'а в потоке сохраняется в плюсовом потоке и надо вызвать cin.clear(). ЗЫ: надо помнить, что всё это лишь грязный хак, зависящий от реализации... Название: Re: freopen и работа с ним Отправлено: Remuless от Июнь 27, 2013, 03:44 во-первых, fclose() лишние [но не очень существенно] во-вторых, достижение eof'а в потоке сохраняется в плюсовом потоке и надо вызвать cin.clear(). ЗЫ: надо помнить, что всё это лишь грязный хак, зависящий от реализации... благодарю, cin.clear() полностью решил проблему. |