[C con Clase] ayuda con emular carácter de escape \n

Davidson, Steven srd4121 en njit.edu
Mar Ene 15 19:04:54 CET 2013


Hola Antonio,

La verdad es que no hay muchas otras opciones para resolver este problema.
Una posible mejora es intentar no crear otra cadena. Podemos usar
'strchr()' para buscar '\n'. La idea sería:

1. Buscar '\n'
2. Cambiarlo por el carácter nulo, '\0'
3. Mostrar la subcadena
4. Cambiar el carácter nulo anterior por '\n' original

Esto supondría que no podemos pasar cadenas originalmente constantes, como
son las literales. Supogno que podríamos hacer algo parecido con
'strtok()', pero tenemos más control si usamos 'strchr()'.


Aparte de esto, te comento que puedes optimizar el bucle 'while'. Escribes:

// Las siguientes llamadas con NULL
while( linea )
{
  linea = strtok( NULL, "\n" );
  if( linea ) {... }
}

Compruebas 'linea' dos veces en cada iteración. Ten presente que 'while'
contiene el comportamiento de 'if'. Tomando esto en cuenta, podemos
reescribir el bucle así:

// Las siguientes llamadas con NULL
linea = strtok( NULL, "\n" );
while( linea )
{
  ...
  linea = strtok( NULL, "\n" );
}

O incluso,

// Las siguientes llamadas con NULL
while( linea = strtok( NULL, "\n" ) )
{
  ...
}


Espero que esto te sirva.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130115/c07aa3c3/attachment.html>


Más información sobre la lista de distribución Cconclase