I found how to set the i2c baudrate in that post: http://forum.arduino.cc/index.php/topic,16793.0.html
You can do it without changing the Wire library code by setting TWBR after the call to Wire.begin() to 12:
Wire.begin();
TWBR = 12; // ((16000000 / 400000) - 16)/ 2
The PC is reading in fact a file containing a vertical ascii tab. I expect to receive in the master side that tab.
Each time the master asks the slave to give him data, the slave in the receiveData() function asks the PC to give him a value from the tab via serial communication. That's why I used the serial communication inside the receiveData() which seems a bad way.
Where can I tell my slave to read from serial when it receives data from wire ?
You should restructure your communication protocol. You shouldn't have to ask the PC for the value while the requesting party is waiting on the I2C bus, remember the clock signal for the bus is coming from the master and the only way to wait for the slave is to dp clock stretching. This blocks the bus completely and should be avoided for longer periods of time. Making a serial communication over the UART is an extremly long period in this regard.
So do send some command to the slave that it should request the data from the PC. Later on request that data which should be stored on the slave in the meantime. This way you can move the serial communication out of the interrupt handler into the main loop() routine. Usually this is done by using a flag/status variable in the handler, then reacting on it in the loop() and resetting it after the action was taken.
What do you want to achieve with your setup? It's quite unusual to request data from an I2C slave which then in turn has to ask a PC behind for the actual value. What's the purpose of this project?