ファイル "file.raw"と一度に4バイトを配列に読み込み、探している特定の4バイトの署名があるかどうかを確認しようとしています。私はこれに問題があります。私が得た結果の値は、freadを使うときは4でなく、0です。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'は意味があります** **読み込み操作が完了した後に... –