Прежде всего, в вашем коде, если ascii - указатель на char, это должно быть
* ascii = '\ 0';
не то, что вы написали. Ваш код устанавливает сам указатель на символ «0». Это означает, что он указывает на плохое место!
Во-вторых, strlen возвращает длину строки, на которую вы указываете. Представьте, что длина строки составляет 10 символов, и вы указываете на третий символ. strlen вернет 8 (так как первые два символа были удалены из расчета). Вычитание этого значения из того места, куда вы указываете, укажет на 6 символов до начала строки. Нарисуйте картинку, чтобы помочь увидеть это.
ИМХО, не имея какой-либо другой информации, невозможно достичь того, что вы хотите сделать.
Из того, что я сказал выше, вы должны быть в состоянии решить, что вам нужно делать, если вы, например, сохраняете исходную длину строки.