т.е. feof мну обманула, функции замера файла возращают меньший размер чем есть на самом деле.
любые косяки могут быть в самом конце но не в середине же файла...
Ты прав, feof тебя обманывает. главный вопрос почему? - оч просто, в результате сложения ксором получается далеко не текстовый файл состоящий из ASCII кодов, а самый натуральный бинарник. По этому как только feof() натыкается на байтик 0x1A (признак конца файла) возвращает тебе true. А байтик у тебя этот после сложения ксором как корейский рандом может вылазить в любом месте.
Короче, fp=fopen("test2.txt","rb"); спасет отца русской демократии (b - режим бинарного файла при открытии).
ПС прикольно в 4 утра поразглагольствовать на тему С++