Удалить последние два байта из файла или игнорировать последние два байта файла в C - PullRequest
0 голосов
/ 08 марта 2012

Здесь я реализую CRC 16 для файла для проверки файла.

Здесь я добавляю CRC в 2 байта в конце файла.Когда файл будет получен на целевом устройстве, я должен рассчитать CRC этого файла без двух последних байтов

Вот мои данные после добавления CRC в конце файла.

test123
wU

Сейчаскогда я снова вычисляю CRC на целевом устройстве, я хочу игнорировать последние два байта.Здесь у меня есть одна общая функция, в которой я открываю файл в режиме чтения и рассчитываю CRC.Я хочу использовать ту же функцию для этого времени.У меня есть одно решение, сделать другую функцию такой же, как предыдущая, и перейти на filesize-2.но не хочу дублировать функцию два раза.Я хочу удалить последние два байта.

Итак, есть ли у тела предложения или решения по этому поводу?

Ответы [ 2 ]

3 голосов
/ 08 марта 2012

Кроме того, вам нужна помощь для усечения двух байтов из файла?

Какой тип API находится на цели.

В POSIX вы можете open файл, затем off_t pos = lseek(fd, 0, SEEK_END) искать до конца, который возвращает позицию.если (pos == (off_t) -1), то вызов не удался.Если вызов был успешным, вы можете просто ftruncate(fd, pos - 2) (при условии, что pos >= 2).

0 голосов
/ 08 марта 2012

Пусть ваша функция принимает параметр, чтобы игнорировать последние n байтов.Введите 0 для обычного использования 2 для этого случая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...