파일 "file.raw"와 한 번에 4 바이트를 배열로 읽으 려하고 찾고있는 특정 4 바이트 서명이 있는지 확인하려고합니다. 나는 이것에 문제가있다. 결과 값은 fread를 사용할 때 4 대신 0입니다.C에서 fread를 사용하여 파일을 읽을 수 없습니다
#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'는 읽기 작업이 완료된 후에 ** 의미가 있습니다 ** ... –