Since you only actually need one \0, you can do this

Code:
    int data_lenght =  recv(fd, buffer, sizeof(buffer)-1, 0);  // allow for a \0
    if ( data_lenght > 0 ) buffer[data_lenght] = '\0';