Saving data from temperature sensor on microSD card

The problem is here:

    while(Wire.available())
        msb = Wire.receive();

    lsb = Wire.receive();

You want to wait for TWO characters and then read them:

    while(Wire.available() == 0)
        /* WAITING FOR A CHARACTER */;
    msb = Wire.receive();
    while(Wire.available() == 0)
        /* WAITING FOR A CHARACTER */;
    lsb = Wire.receive();

or

    while(Wire.available() < 2)
        /* WAITING FOR TWO CHARACTERS */;
    msb = Wire.receive();
    lsb = Wire.receive();