C18 RAM c-string - Withouth copying
It doesn't lead to an empty string, it's just that the context in which you are using the string is wrong.

With the smaller PIC chips and indeed with most Harvard architecture chips, there are two distinct memory address ranges - the RAM and the ROM address spaces.  Both address spaces have the same address numbers, so it can get confusing if you're not sure what you're doing.

To illustrate, your string could be at address 100.  Now, is that RAM address 100 or ROM address 100? Both are address 100, but they each need different instructions to get at them.

Using a function that reads RAM address 100 will of course not return the same data as a function that reads ROM address 100, so your string will appear to be empty - or complete gibberish.

C18 automatically places all string constants in ROM:


  The primary use of data located in program memory is for static strings. In keeping
  with this, MPLAB C18 automatically places all string constants in program memory.
  This type of a string constant is “array of char located in program memory”, (const
  rom char []). The .stringtable section is a romdata (see Section 2.9.1
  “#pragma sectiontype”) section that contains all constant strings.
  
  Due to the fact that constant strings are kept in program memory, there are multiple
  versions of the standard functions that deal with strings. For example, the strcpy
  function has four variants, allowing the copying of a string to and from data and
  program memory


So you have to ensure you use the right functions to access the ROM not the RAM.

Strings must be passed to functions in the right way to ensure that they are accessed with the right code.  All string parameters must be:

static const rom char *


Most standard string functions have extra variants, which either end in pgm2ram, ram2pgm or pgm2pgm.  Those that need just one parameter have the suffix pgm for ROM based access.

The printf family of functions have the additional parameter "%S" for ROM based strings (as opposed to "%s" for RAM based strings).