Я пишу программу шестнадцатеричного дампа на C. Я знаю, что существует множество программ шестнадцатеричного дампа, но я хотел написать одну для опыта.Я написал программу в CodeBlocks для Windows, но, похоже, я не могу заставить ее работать.
Я читаю в тестовой программе, которая составляет примерно 137 000 байт, но программа останавливается на 417 байт.Теперь, когда я компилирую код в Linux (поскольку это только консольное приложение и использует стандартные библиотеки C), он работает отлично и возвращает правильное количество байтов в файле.Кто-нибудь есть идеи, почему read () не будет работать в Windows, но прекрасно работает в Linux?
Ниже приведен пример того, как я читаю в файле.
int main(int argc, char **argv)
{
if (argc != 2) { return 1; }
int fd = open(argv[1], O_RDONLY);
if (fd == -1) { return 1; }
unsigned char buffer[8];
unsigned int bytes = 0;
unsigned int total_bytes = 0;
while ((bytes = read(fd, buffer, sizeof(unsigned char) * 8)) > 0) {
...
total_bytes += bytes;
}
printf("Total Bytes: %d\n", total_bytes);
return 0;
}