Странное поведение diff & cmp

Я написал программу, которая кодирует / декодирует текстовый файл, изменяя каждый символ в соответствии с определенной формулой (например, char - 3 * 22 + KEY). (не размещать здесь, потому что это домашнее задание)

Кажется, что все работает как задумано, потому что, когда я выполняю операции кодирования, а затем декодирования, я получаю исходный текст:

$ cat text.txt
Hello World

./encrypt text.txt out.txt 1

$ cat out.txt
`}%%(8o(+%|

./encrypt out.txt out2.txt -1

$ cat out2.txt
Hello World

Проблема в том, что команды diff и cmp жалуются на то, что визуально идентичные файлы на самом деле разные:

$ diff -a text2.txt out2.txt
1c1
< Hello World
---
> Hello World


text2.txt rev.txt differ: char 1, line 1

Конечных пробелов нет, но второй файл как-то на 2 байта больше.

Что может быть причиной этого?

ОБНОВИТЬ:

Декодированная версия всегда выдает два символа \0 в начале

$ od -c final.txt
0000000   \0  \0   H   e   l   l   o       W   o   r   l   d  \n   A  \n
0000020    B  \n   C                                                    
0000023

$ od -c text2.txt
0000000    H   e   l   l   o       W   o   r   l   d  \n   A  \n   B  \n
0000020    C                                                            
0000021

Почему я не вижу их в текстовом файле?

0 ответов

Другие вопросы по тегам