Displaying temperature one LCD on Virtual wire Rx

I'm receiving the temperature readings on the receiver serial monitor, but i can't seem to display the temperature reading on an LCD display. I'm assuming i might need to change the temperature from a string back to float, i need assistance in doing this. Thanks

     //Transmitter
    #include <VirtualWire.h>
    #include <OneWire.h>
    #include <DallasTemperature.h>
    #define ONE_WIRE_BUS 12
    OneWire oneWire(ONE_WIRE_BUS);
    // ?????????? Dallas Temperature.
    DallasTemperature sensors(&oneWire);
    void setup()
    {
      Serial.begin(9600);

      vw_setup(2000); 
      vw_set_tx_pin(7);
      Serial.println("Transmitter");
      Serial.print("\n");
      // Start up the library
      sensors.begin(); 
    }
    void loop()
    {
      char msg[24];
      sensors.requestTemperatures(); 
      dtostrf(sensors.getTempCByIndex(0), 6, 2, msg); 
      vw_send((uint8_t *)msg, strlen(msg)); 
      vw_wait_tx(); 
    }
//Reciever
#include <VirtualWire.h>
void setup()
{
  Serial.begin(9600);
  pinMode(13,OUTPUT);
  digitalWrite(13,LOW);
  Serial.print("Reciever");
  Serial.print("\n");
  vw_set_ptt_inverted(true);
  vw_setup(2000);
  vw_set_rx_pin(7);
  vw_rx_start();
}
void loop()
{
  char res[24];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;
  uint8_t buf[VW_MAX_MESSAGE_LEN];

  if(vw_get_message(buf, &buflen))
  {
    digitalWrite(13,!digitalRead(13));
    Serial.print("msg recieved...");
    Serial.print("\n");
    for(int i = 0;i < buflen;i++)
    {
      res[i] = buf[i];
    }
    digitalWrite(13,!digitalRead(13));
    Serial.print(res);
    Serial.print("\n");
  }
}
    for(int i = 0;i < buflen;i++)
    {
      res[i] = buf[i];
    }

Completely useless.

    Serial.print(res);

res isn't a string. Don't pass it to a function that expects a string.

buf[buflen] = '\0';
Serial.print((char *)buf);

buf now IS a string. You just need to lie to the function.

but i can't seem to display the temperature reading on an LCD

Something happens, I'm sure.