23.11.2019, 02:54 [+3 UTC]
в нашей команде: 3 986 чел. | участники онлайн: 2 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.78 (18.11.2019)
JS-v.1.34 | CSS-v.3.35

Общие новости:
28.04.2019, 09:13

Форум:
22.11.2019, 18:00

Последний вопрос:
23.11.2019, 00:52
Всего: 151032

Последний ответ:
22.11.2019, 21:37
Всего: 259443

Последняя рассылка:
22.11.2019, 22:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
15.10.2009, 19:48 »
Serega_artem
Спасибо огромное! Четкий и ясный ответ! [вопрос № 173304, ответ № 255448]
02.05.2019, 14:26 »
dar777
Это самое лучшее решение! [вопрос № 195430, ответ № 278027]
24.02.2019, 18:11 »
dar777
Это самое лучшее решение! [вопрос № 194770, ответ № 277524]

РАЗДЕЛ • С / С++

Создание программ на языках C и C++.

[администратор рассылки: Андрей Кузнецов aka Dr_Andrew (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Модератор
Рейтинг: 1378
Gluck
Статус: 7-й класс
Рейтинг: 799
Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 681

Перейти к консультации №:
 

Консультация онлайн # 144425
Раздел: • С / С++
Автор вопроса: Warobushek
Отправлена: 19.09.2008, 20:49
Поступило ответов: 3

В одной книге по Си прочитал, что использование "wt" при открытии файлов может привести к непереносимости программ.
Там написано, что нужно использовать "w" вместо этого.
-----------
Так ли это?

Состояние: Консультация закрыта

Ответ # 229706 от Виктор Пырлик

Здравствуйте, Warobushek!

Не «вместо».. первый параметр, в данном случае это w — указывает что сделать с файлом, спецификатор же t определяет как открыть файл, в данном случае — в текстовом режиме.
Обычно, не задают t т.к. Предполагается что по умолчанию открывается в текстовом режиме (что определяется переменной _fmode и режимом, устанавливаемым по умолчанию). Но наедятся на это не следует. Хотя, всё же явно задают только бинарный режим — b .
Я бы советовал использовать и t и b указывая явно. Хуже от этого не станет. А на переносимость программ это не влияет.

URL >> Описание функций C (Си) / C++ - fopen


Консультировал: Виктор Пырлик
Дата отправки: 19.09.2008, 21:03

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Здравствуйте, Warobushek!

Конечно, приведёт. Это опять чья-то самодеятельность. В стандарте "t" нет вообще. Цитирую §7.19.5.3 ISO/IEC 9899:TC2:

Приложение:


Консультировал: Хватов Сергей (Академик)
Дата отправки: 19.09.2008, 22:15

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 229730 от Provisor

Здравствуйте, Warobushek!
Да это так. Дело в том, что для перевода строки в разных ОС используются разные символды/сочетания символов: LF (0x0A) — в системах UNIX, CR (0x0D) — в системах MacOS, CR LF (0x0D 0x0A) — в системах DOS–Windows. Поэтому файл и не рекомендуется открывать в текстовом режиме.


Консультировал: Provisor
Дата отправки: 20.09.2008, 07:18

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 144425
Warobushek

# 1

= общий = | 20.09.2008, 12:33

to Виктор Пырлик && Хватов Сергей
Я в растерянности.. smile На что ориентироваться? Влияет или нет? Ответ Хватова Сергея более убедителен, т.к. ссылка на стандарт

to Provisor и все кто знает
А разве открытие файла в текстовом режиме не подразумевает замену сочетания символов перевода строки на единственный символ LF ('\n')
средствами стандартной библиотеки?

Хватов Сергей
Академик

ID: 20764

# 2

= общий = | 20.09.2008, 13:27 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

В стандарте только сказано про текстовые и двоичные файлы. Он не оговаривает, чем отличается работа с текстовыми и двоичными файлами, но устанавливает, что по умолчанию (без "b") файл открывается в текстовом режиме. А в чём это выражается (преобразование CRLF в NL, игнорирование '\0' или даже перекодировка) - это уже реализация вольна решать сама. Например, в UNIX-ах вообще не делается никаких преобразований.

Виктор Пырлик

# 3

= общий = | 20.09.2008, 13:28

Вы открываете без t - по умолчанию в текстовом режиме. И в какой ОС вы это откроете - не имеет значения.
Если вы открываете файл в Linux, который был создан и заполнен в Windows (например), то конечно управляющая последовательность будет другой.
Читая файл - вы не изменяете его. Если будите писать в него, то будет это делаться либо так, как принято в вашей ОС, либо так, как вы определили сами.
С другой стороны, открыв файл в бинарном режиме (допустим, у вас "по умолчанию" такой режим работает), вы конечно можете с ним работать - но всегда ли это то, что вам надо? Все равно, запись тех же строк будет выполнена по правилам данной ОС.. или, вы должны будите специально заботиться о том, что бы управляющая последовательность была такой, как вам надо. Режим работы определяется в первую очередь конкретной ситуацией.
К тому же, имеет значение и локаль, которая у вас стоит (для *nix).

 

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

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.16448 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.78 от 18.11.2019
Версия JS: 1.34 | Версия CSS: 3.35