Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с fread/fwrite под UNIX/WIN 
:(
    Опции темы
hente
Дата 15.5.2010, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.3.2009
Где: Томск

Репутация: нет
Всего: нет



Всем привет пишу в файл данные, под линуксом все отлично работает
когда скомпилил под винду тоже самое появилась проблема когда читает символ 1D
то воспринимает его как конец файла :((( но это далеко не конец!!
Конечно же сразу поставил флаг "b" по документации вроде как игнорируются  спец символы!
Но все равно fread поспринимает его как конец файла!!! чем его можно заменить или заставить адекватно работать ???

За ранее благодарствую,....
--------------------
  долой быдло кодеров!!!
PM MAIL   Вверх
boostcoder
Дата 15.5.2010, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



код, как создаешь файл, записываешь, открываешь, читаешь.
PM WWW   Вверх
xvr
Дата 17.5.2010, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(hente @  15.5.2010,  08:50 Найти цитируемый пост)
Конечно же сразу поставил флаг "b" по документации вроде как игнорируются  спец символы!
Но все равно fread поспринимает его как конец файла!!!
Значит куда то не туда 'b' поставил, проверяй  smile 
PM MAIL   Вверх
Earnest
Дата 17.5.2010, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Что-то я сомневаюсь, что проблема в символе 1d. Даже если бы был текстовый режим, то 1d это никак не конец файла. Да и нет никакого символа "конец файла": файл кончается, когда последний байт прочитан, вот и все. Возможно ты неправильно интерпретируешь возвращаемое значение fread или что-то вроде.


--------------------
...
PM   Вверх
xvr
Дата 17.5.2010, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(Earnest @ 17.5.2010,  19:23)
Что-то я сомневаюсь, что проблема в символе 1d. 

Угу
Цитата

Даже если бы был текстовый режим, то 1d это никак не конец файла. 
Угу
Цитата

Да и нет никакого символа "конец файла": файл кончается, когда последний байт прочитан, вот и все. 
Не угу  smile Ctrl-Z (0x1A) рассматривается как 'Конец файла' (по крайней мере CRT от MS это расматривает так)
Кусок из CRT - функция read
Код

        if (_osfile(fh) & FTEXT) {
            /* now must translate CR-LFs to LFs in the buffer */

            /* set CRLF flag to indicate LF at beginning of buffer */
            if ( (os_read != 0) && (*(char *)buf == LF) )
                _osfile(fh) |= FCRLF;
            else
                _osfile(fh) &= ~FCRLF;

            /* convert chars in the buffer: p is src, q is dest */
            p = q = buf;
            while (p < (char *)buf + bytes_read) {
                if (*p == CTRLZ) {                                              ////// <<<<< Here !
                    /* if fh is not a device, set ctrl-z flag */
                    if ( !(_osfile(fh) & FDEV) )
                        _osfile(fh) |= FEOFLAG;
                    break;              /* stop translating */
                }


PM MAIL   Вверх
borisbn
Дата 18.5.2010, 06:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



xvr, 
Цитата

i f ( _ o s f i l e ( f h ) & F T EXT ) {

Насколько я понял, это для варианта с буковкой "t" в fopen, а ТС сказал, что ставил "b". Скорее всего, проблема в другом, т.к. 1D никак не равен CTRLZ

hente, сделай простенькую программку из трёх строк и проверь. Если не заработает - код в студию + входной файл в аттаче


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Earnest
Дата 18.5.2010, 07:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(xvr @  17.5.2010,  23:17 Найти цитируемый пост)
Не угу

Ну, может быть. Но я сколько не писала-читала текстовые файлы, как-то обходилась... С другой стороны, если посмотреть текстовый файл как бинарный - нет там такого символа... Разве что система при чтении добавляет...


--------------------
...
PM   Вверх
xvr
Дата 18.5.2010, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(borisbn @  18.5.2010,  06:36 Найти цитируемый пост)
Насколько я понял, это для варианта с буковкой "t" в fopen
Или без буковок (bt) вообще
Цитата

а ТС сказал, что ставил "b"
Сказал ...
Цитата

Скорее всего, проблема в другом, т.к. 1D никак не равен CTRLZ
Это да - 100% CTRLZ это 1A. 
Цитата

hente, сделай простенькую программку из трёх строк и проверь. Если не заработает - код в студию + входной файл в аттаче
Поддерживаю.

PM MAIL   Вверх
hente
Дата 18.5.2010, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.3.2009
Где: Томск

Репутация: нет
Всего: нет



Извеняюсь ошибся я про 1В.....на самом деле 1А Биру просто записываю в цикле последовательность чисел типа инт все пишет под линуксом ОК(и читает ОК) а вот когда под виндой читаю тофункция фреад как до ходит до числа 26 (в хекс 1А) то все перестает читать......решил попробовать функции read/write/open щас сделаю отпишусь...

Это сообщение отредактировал(а) hente - 18.5.2010, 11:06
--------------------
  долой быдло кодеров!!!
PM MAIL   Вверх
Earnest
Дата 18.5.2010, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(hente @  18.5.2010,  12:03 Найти цитируемый пост)
просто записываю в цикле последовательность чисел типа инт 

Смотря как ты их пишешь. Если в текстовом режиме, то 1A никак не попадется. А если в бинарном - то 1A никому не мешает. Может ты открывашь файл в текстовом режиме, а сам туда двоичные данные пишешь, не преобразовывая инты в строки? Иначе откуда read...


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0579 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.