Thanks, jremington. I put the "multiple byte variable above the volts() function to make it global instead of local, and that fixed everything! I guess my vabriable was being disposed of with the function before it had a chance to be read.
But your second line I don't understand. [UPDATE:] Didn't until AWOL explained it below. Thanks AWOL.
jremington:
Most people use a pointer in the call argument to return a character string.
Want to give me an example of what that might be?
Fox65535:
add str[0] = 'A';
I think you mean the byte str[0] is empty, so needs something in it so it doesn't mark the end of the string?
Actually, it does have a value in in it, because sprintf() startes filling a char string at character str[0], so it won't be empty. You saw I moved the other bytes around, but left str[0] alone, because the "7" in str[0] was already correct.