EEPROM values maxed out

I am trying to use the 24lc256 EEPROM to store data but I am having issues with it. The EEPROM keeps giving me FF, and it isn’t just one EEPROM, i tested the three that I have and all of them give me the same result. The code I am using is bellow:

#include <Wire.h>        
#define eeprom 0x50    

void setup(void){
  Wire.begin();           
  Serial.begin(9600); 

  unsigned int address = 0;  
  for(address = 0; address<10; address++) writeEEPROM(eeprom, address, 3);

  for(address = 0; address<10; address++) {
     Serial.print(readEEPROM(eeprom, address), HEX); 
     Serial.print(", ");
  }
}

void loop(){
}

void writeEEPROM(int deviceaddress, unsigned int eeaddress, byte data ) {
  Wire.beginTransmission(deviceaddress);
  Wire.send((int)(eeaddress >> 8));  
  Wire.send((int)(eeaddress & 0xFF)); 
  Wire.send(data);
  Wire.endTransmission();
}

byte readEEPROM(int deviceaddress, unsigned int eeaddress ) {
  byte rdata = 0xFF;
  Wire.beginTransmission(deviceaddress);
  Wire.send((int)(eeaddress >> 8));
  Wire.send((int)(eeaddress & 0xFF));
  Wire.endTransmission();
  Wire.requestFrom(deviceaddress,1);
  if (Wire.available()) rdata = Wire.receive();
  return rdata;
}

Insert

delay(10);

as the last line of your writeEEPROM() function.

It takes some time for the eeprom to burn the data into the silicon, according to specs.

Yes, the delay is needed.

Also you should probably be casting to byte instead of int in your wire.send calls.

Lastly, you have pull-up resistors on SDA and SCL right?

Lastly, lastly, your device address assumes you have A0, A1 and A2 tied low. Do you actually have them tied low and not floating?

BTW, the "eeprom values are maxed out" because no byte was written to eeprom. Usually, a "virgin" eeprom has its bytes set to 0xFF.