int main(int argc, char* argv[])
{
// opens the memory
FILE* inptr = fopen("card.raw", "r");
if(inptr == NULL)
{
// checks for the availability of the file
printf("Couldn't open card.raw\n");
return 1;
}
char title[7];
int i = 0;
bool start = false;
BYTE* block = malloc(sizeof(BYTE) * 512);
while(fread(block, sizeof(BYTE), 512, inptr) == 512)
{
if(fsign(block) && !start)
{
sprintf(title,"%.3d.jpg" , i);
i++;
FILE* image = fopen(title, "w");
fwrite(block, sizeof(BYTE), 512, image);
fclose(image);
}
else if(!fsign(block) && start)
{
FILE* image = fopen(title, "a");
fwrite(block, sizeof(BYTE), 512, image);
fclose(image);
}
}
fclose(inptr);
free(block);
}
bool fsign(BYTE* block)
{
if(*(block) == 0xff)
{
if(*(block + 1) == 0xd8)
{
if(*(block + 2) == 0xff)
{
if(*(block + 3) >= 0xe0 && *(block + 3) <= 0xef)
{
return true;
}
}
}
}
return false;
내 질문은 while 루프에 있습니다. while 루프는 3 번 반복되고 fread 함수는 세 번 반복 될 때마다 파일을 성공적으로 읽습니다. 그러나 세 번째 반복에서는 fread가 세그멘테이션 오류를 발생시킵니다. 왜 그런 일이 일어날까요?세분화 오류를 일으키는 "fread"함수
이것이 C++라고 생각된다면 왜 C++을 사용하지 않습니까? 그것이 c로되어 있다면, C++ 태그 – user463035818
을 제거하십시오. 디버거를 사용하여 코드를 단계별로 실행하는 법을 배우기에 적합한 시점입니다. –