What's the most direct way to assign Serial.read() bytes to an array?
@DataFiddler suggested something like readBytesUntil.  In fact, you can just use readBytesUntil.  It returns either when timeout happens or when you reach the specified terminator.  It consumes, but does not include the terminator.  The timeout defaults to 1000 milliseconds, and can be modified with the setTimeout() method.
One downside is that you can't differentiate timeout, full buffer, and terminator reached.  This shouldn't be a problem except for serial transmission errors.
If your data is coming in at the NMEA standard 4800 baud, you could reasonably change the timeout to 5 milliseconds and still work.

One thing that might bite you, is the line:
     rf95.send((char *)c, sizeof(c));

It is a mistake to cast the first parameter.  The error you got indicated you should write:
     rf95.send(&amp;c, sizeof(c));

But the sizeof is also wrong.  The return type of Serial::read() is int, in part because there are 257 possible values.  If you declared c as an int, its size would be 2, not 1.
In any case, if you are using readBytesUntil, you pass the same buffer you passed it to rf95.send(), and the return value from the first as the second parameter of the second.