Hi,
Your address is "char", but char usually is a byte with range of 0...255. I think you need uint16 at least.
Your EEPROM data is "long" usually is 16 bit, but EEPROM data usually are byte oriented. So here a "char"may be used.
But I don't be familiar with your compiler...and there are 16bit oriented EEPROMs.
So please check both
Klaus
Added:
Sorry, just realized that EEPROM addres is the I2C address. Char is suitable..
Does it compile without warnings? Maybe you're running out of memory.
Indeed I personally don't like the "int" and "long", because it depends on compiler and/or device what variable size is used.