-5
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
這只是瞭解如何使用調試器來遍歷代碼的正確點。 –