I don't see an endTransmission function call anywhere.
Wire.beginTransmission(I2C_address);
Wire.write(register_address);
// add this
Wire.endTransmission();
edit: I see it now. You have it at the end of the next line. I guess you need to check the return value.