подскажите почему при выполнении кода вместо 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 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.