[C con Clase] Cannot convert from 'char *' to 'char []

Gilberto Cuba Ricardo gilbert en hlg.rimed.cu
Mie Ene 6 13:53:58 CET 2010


Hola Lista,

  Bueno, esto es una duda que siempre he tenido, el hecho de utilizar
  una función que devuelve un char* y en su lugar lo que estoy
  poniendo es una variable de arreglo. Pongo un ejemplo para que esto
  se vea mejor. Vamos a suponer que tenemos lo siguiente:

  1: char str[20];
  2: str = ctime(&now);

  Aquí en la línea 2 es donde se presenta el error que tiene por
  título el correo, y lo cual me queda bien claro y es que no puede
  asignarle el puntero al arreglo de 20 caracters.

  Una alternativa que he utilizado en ocasiones es la siguiente:

  1: char *str = (char *)malloc(sizeof(char) * 20);
  2: str = ctime(&now);
  3: ...
  4: free(str);
  
  y la cual veo conveniente; pero ustedes se imaginan el hecho de que
  esto esté dentro de un ciclo, que esté constantemente en cada
  iteración reservando y liberando la memoria, me imagino también que
  pensarían y bueno, si siempre es esa cantidad porque no se reserva y
  libera fuera del ciclo, lo cual está bien. Pero al respecto sigo
  reflexionando, tengo entendido, y que me corrijan si me equivoco,
  porque no conozco mucho al respecto, en el primer ejemplo cuando se
  compila ya se ha reservado ese espacio de memoria el cual siempre ya
  estará utilizable, lo cual no sucede así en el segundo ejemplo y que
  se irá reservando y utilizando durante la ejecución, tema que demora
  la ejecución de la aplicación.

  Espero, tener comentarios al respecto y bueno, tal vez otra
  alternativa de solución.

-- 
Salu2,
 Gilbert





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