// a cursor variable, for positioning purposes
int cursor = 0;
// declare a counter
int counter = 0;
// start a loop
while (counter <= 0)
{
// get the cursor positioned correctly
fseek(fp, cursor, SEEK_SET);
// read the file and search for the jpeg key
JPG_KEY key;
fread(&key, sizeof(JPG_KEY), 4, fp);
// check the key to see if you are at the start of a jpeg
if(check_jpg_key(key))
counter++;
cursor++;
}
出於某種原因,我的「光標」和「計數器」變量在本程序中間跳到可以高得多的整數,而不是在每個循環中遞增1。用gdb,我發現光標的值從0跳到2099202,計數器的值從0跳到3419700這一行:fread(& key,sizeof(JPG_KEY),4,fp);爲什麼我的int變量值突然跳躍?
爲什麼?
謝謝!這解決了它。計數器和遊標值不再跳躍。 – hannah 2012-07-20 21:27:16
@newbie_hannah,如果將來你看到的值在沒有告訴它們的情況下會發生變化,它幾乎總是超出數組邊界(在這種情況下,'fread'認爲是'JPG_KEY [4]'數組的邊界,而實際上它是'JPG_KEY [1]')。 – Shahbaz 2012-07-20 21:58:48