Не могу правильно сравнить два текстовых файла, используя 'cmp'

Я пытаюсь сравнить два текстовых файла, используя:

if cmp -s file1 file2
 then
echo "Accepted"
 else
echo "Wrong Answer"
fi

Вывод программы C ++ передается по конвейеру в файл1, а ожидаемый вывод я уже сохранил в файле2. Например, программа «Hello World» печатает выходные данные в файл file1, а я уже скопировал текст «Hello World» в файл file2. Несмотря на то, что текст в двух файлах одинаков, почему я получаю «Неправильный ответ»?

Тогда как это работает, когда я печатаю целые числа от 1 до 10 в файл1 и уже сохраняю ожидаемый результат в файл2 , На этот раз я получаю "Принят". Что я могу сделать вывод, так это то, что сравнение чисел работает хорошо, тогда как сравнение символов не работает.

1
задан 14 January 2015 в 12:24

1 ответ

Если Вы будете работать cmp без -s опция, она объяснит , почему она думает, что файлы отличаются.

От Вашего кода, отправленного в Ваших комментариях, Вот то, на что Ваши файлы похожи с Hex-редактором:

res_op_file 12 байтов длиной и заканчивается \n (0a):

0000000: 4865 6c6c 6f20 576f 726c 640a            Hello World.

op_file 11 байтов длиной и не имеет \n:

0000000: 4865 6c6c 6f20 576f 726c 64              Hello World

diff имеет -Z опция, "-игнорировать-конечный-пробел", который проигнорирует любой пробел в конце строки. Если Вы не заботитесь, что [приблизительно 1 112] производят, просто помещают > /dev/null до конца команды, как:

if diff -Z file1 file2 > /dev/null
 then
echo "Accepted"
 else
echo "Wrong Answer"
fi
0
ответ дан 14 January 2015 в 12:24

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

Похожие вопросы: