|
|
|
В чем ошибка?
|
|||
|---|---|---|---|
|
#18+
Есть следующий код hSourceFile = _open((LPSTR) m_lpszEntryName,_O_RDONLY | _O_TEXT ); lFileLen = _filelength(hSourceFile); lpszImportSyntax = (LPSTR) malloc((size_t) lFileLen+1); _read(hSourceFile,lpszImportSyntax,lFileLen); _close(hSourceFile); hSourceFile =_open("CompErr1.log",_O_RDWR | _O_TEXT | _O_CREAT ); _write(hSourceFile,lpszImportSyntax, lFileLen); _close(hSourceFile); по идеи CompErr1.log должен быть идентичен файлу с которого мы считали информацию на самом же деле он получается немного другим (последняя строка дублируется два раза). В чем ошибка ни как не могу понять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 17:34 |
|
||
|
В чем ошибка?
|
|||
|---|---|---|---|
|
#18+
Тк указан _O_TEXT, то файл открывается в текстовом режиме. Это значит, что после вызова функции read(), в буфере будет заменена последовательность символов 0x0D 0x0A на 0x0A, те символы 0x0D просто удаляются из буфера. Значит длина прочитанных данных будет меньше длины, которую вернула функция lFileLen = _filelength(hSourceFile). При записи write() все происходит в обратном порядке, те все символы 0x0A заменяются на последовательность символов 0x0D 0x0A и длина файла увеличивается. Итак, когда мы читаем lFileLen байт, реально прочитывается меньше, хвост заполнен в общем случае произвольными данными, когда записываем lFileLen байт, то захватываем этот хвост. Вообще, единственный корректный способ определить сколько байт успешно записано или считано - это проанализировать возвращаемое значение функций read() или write(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 22:33 |
|
||
|
В чем ошибка?
|
|||
|---|---|---|---|
|
#18+
В дополнение к предыдущему. Вместо _O_TEXT пользуйтесь _O_BINARY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2004, 09:00 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32437036&tid=2035308]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 288ms |

| 0 / 0 |
