De hecho con strtok no destruyes tu cadena original, como puedes observar en la liga que te pase, declaras otro apuntador en el que irás guardando cada una de las partes de tu cadena original.
Otra opcion que pudiera ofrecerte es que hagas un for recorriendo cada caracter de tu cadena y cada que encuentres tu separador imprimes el valor que exista...
Código:
for(i=0;*(cadena+i)!='\0';i++){
if(*(cadena+i)=='|'){
}
}
Aunque nuevamente como te mencionaba, yo no aconsejaria que tu separador sea un nulo, ya que tendrás problemas con la lectura de tu apuntador... y requieres un buffer intermedio que te permita ir extrayendo cada uno de los componentes de la cadena original...
Espero te ayude esto...