всех с наступающим! недавно проводил анализ винды. и обнаружил одну странность. вот код: Код (Text): #include <stdio.h> #include <string.h> char data[]= "\x0A"; int main() { FILE *file; file = fopen("re.fff", "w+"); fwrite(data, 1, sizeof(data)-1, file); } по алгоритму должен быть создан файл re.fff с содержимым внутри 0x0A в hex (если открывать через hex-редактор), но вот создается файл re.fff, только его содержимое получается такое: 0x0D, 0x0A (в hex). продизасмил fwrite() в msvcrt.dll, но ничего странного не нашел. разъясните, пожалуйста, кто знает в чем трабла. заранее благодарен, и с наступающим
Если файл открыт в текстовом режиме, fwrite заменяет 0xA на 0xD + 0xA. Открывайте файл так: Код (Text): file = fopen("re.fff", "w+[b]b[/b]");
В винде используется комбинация CRLN (0xD + 0xA) в качестве маркера новой строки. В *никсах используется просто 0xA. Т.к. fwrite - стандартная сишная функция, МС попыталась сделать её "кроссплатформенной" и, чтобы учесть эту тонкость с 0x0A0D vs. 0x0A, в текстовом режиме автоматически добавляет 0xD.