Я пытаюсь прочитать файл «file.raw» и по 4 байта за один раз в массив и проверить, есть ли у него конкретная 4-байтовая подпись, которую я ищу. У меня проблемы с этим. Значение результата, которое я получаю, равно 0, вместо 4 при использовании fread.Невозможно прочитать файл, используя fread в C
#include<stdint.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef uint8_t BYTE;
int main(void)
{
size_t result;
FILE *inptr = fopen("file.raw","r+");
//Check if file can be opened.
if (inptr == NULL)
{
printf("File Open Error\n");
return -1;
}
long int x = 0;
while(!feof(inptr))
{
// Make space for reading in to an array
BYTE *array = (BYTE *) malloc(10);
if(array == NULL)
{
printf("Array Initialization Error\n");
return -1;
}
result = fread(array,1,4,inptr);
//Exit if file not read. ** This is where I can't get past.
if(result != 4)
{
printf("File Read Error\n");
printf("%d\n",result);
free(array);
fclose(inptr);
return -1;
}
//Compare strings
if(memcmp(array,"0xffd8ffe0",4)==0)
{
printf("File Start found\n");
printf("Exiting...\n");
printf("%p\n",inptr);
free(array);
fclose(inptr);
return 0;
}
x++;
free(array);
}
printf("%p\n",inptr);
printf("%ld\n",x);
fclose(inptr);
return 0;
}
Что дает вам 'ferror (inptr)'? –
Проверьте 'feof()' и 'ferror()', чтобы определить причину: EOF или сбой чтения. Если проверка ошибки чтения 'errno', чтобы получить причину отказа. – hmjd
Также запись 'while (! Feof (inptr))' полностью нарушена. 'feof' является только значимым ** после того, как ** операция чтения была сделана ... –