непонятки при записи в файл
От: Аноним  
Дата: 01.07.11 19:33
Оценка:
подскажите почему при выполнении кода вместо 0D пишется 0D 0D ?

WCHAR data = L"31 0D 0A 32 32 0D 0A ";
for (int i=0; i<psize; i++)
{
    DWORD dw = 0;
    swscanf(data + 3 * i, L"%02x ", &dw);
    fwrite(&dw, sizeof(char), 1, fstream);
}
Re: непонятки при записи в файл
От: Denis Mingulov Финляндия http://denis.mingulov.com
Дата: 02.07.11 03:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>подскажите почему при выполнении кода вместо 0D пишется 0D 0D ?

Потому что текст.
Re[2]: непонятки при записи в файл
От: Аноним  
Дата: 02.07.11 06:45
Оценка:
Здравствуйте, Denis Mingulov, Вы писали:

DM>Здравствуйте, Аноним, Вы писали:


А>>подскажите почему при выполнении кода вместо 0D пишется 0D 0D ?

DM>Потому что текст.

я же конвертирую в байты
со всеми другими срабатывает, например 31 превращается в 1, 0A в перевод строки
проблема только с 0D
может есть другой способ ?
Re[3]: непонятки при записи в файл
От: Centaur Россия  
Дата: 02.07.11 07:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>>>подскажите почему при выполнении кода вместо 0D пишется 0D 0D ?

DM>>Потому что текст.

А>я же конвертирую в байты


Потому что ты не указал при открытии файла флаг "b".
Re[4]: непонятки при записи в файл
От: Аноним  
Дата: 02.07.11 08:35
Оценка:
Здравствуйте, Centaur, Вы писали:

C>Здравствуйте, Аноним, Вы писали:


А>>>>подскажите почему при выполнении кода вместо 0D пишется 0D 0D ?

DM>>>Потому что текст.

А>>я же конвертирую в байты


C>Потому что ты не указал при открытии файла флаг "b".


спасибо, помогло
Re: непонятки при записи в файл
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 02.07.11 08:36
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>подскажите почему при выполнении кода вместо 0D пишется 0D 0D ?


А>
А>WCHAR data = L"31 0D 0A 32 32 0D 0A ";
А>for (int i=0; i<psize; i++)
А>{
А>    DWORD dw = 0;
А>    swscanf(data + 3 * i, L"%02x ", &dw);
А>    fwrite(&dw, sizeof(char), 1, fstream);
А>}
А>


Формулировка твоего вопроса неверна.
Если ты запишешь 0D сам по себе, то увидишь, что 0D как раз не меняется (не двоится). А вот вместо 0A пишется 0D 0A, и это как раз означает комбинацию двух вещей:
1. Ты делаешь это на Windows или другой платформе, у которой штатный разделитель строк — CRLF.
2. Ты открыл файл без флага 'b', о чём тебе уже сказали несколько человек в этом треде.

Dixi, однако. А ещё — FAQ.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.