Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: kworld en 31 Mayo 2010, 10:18 am



Título: modificar arreglo de cadena de caracteres
Publicado por: kworld en 31 Mayo 2010, 10:18 am
Hola, quiero modificar un arreglo de cadena de caracteres, quiero asignarle al indice 0 de cada cadena un caracter, pero no funciona, ¿Alguien podría ayudarme?

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. char* listado[] = {
  6.        "_:\\mi_listado.txt",
  7.        "_:\\notas.txt",
  8.        "_:\\p.txt"
  9. };
  10.  
  11. int i;
  12.  
  13. for (i=0; i < 3; ++i)
  14. {
  15.     listado[i][0] = 'C';
  16.     printf("%s\n",listado[i]);
  17. }
  18.  
  19.  
  20. }
  21.  
  22.  


Título: Re: modificar arreglo de cadena de caracteres
Publicado por: Gallu en 31 Mayo 2010, 12:18 pm
A mi me paso algo parecido , mirate esto
  http://foro.elhacker.net/programacion_cc/problemas_con_funcion_tolower_del_ctype-t279250.0.html;msg1374719#msg1374719 (http://foro.elhacker.net/programacion_cc/problemas_con_funcion_tolower_del_ctype-t279250.0.html;msg1374719#msg1374719)

una posible solución es la siguiente:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main() {
  6. char listado[3][10];
  7.  
  8. strcpy(listado[0], "_:\\mi_listado.txt");
  9. strcpy(listado[1], "_:\\notas.txt");
  10. strcpy(listado[2], "_:\\p.txt") ;
  11.  
  12.  
  13. int i;
  14.  
  15. for (i=0; i < 3; i++) {
  16.     listado[i][0] = 'C';
  17.     printf("%s\n",listado[i]);
  18. }
  19.  
  20.  
  21. }
  22.  
  23.  
  24.  


Título: Re: modificar arreglo de cadena de caracteres
Publicado por: Littlehorse en 31 Mayo 2010, 15:38 pm
Igualmente si declaras el arreglo bidimensional de esa forma, podes inicializar el contenido perfectamente:

Código
  1. char listado[3][19]= {
  2.        "_:\\mi_listado.txt",
  3.        "_:\\notas.txt",
  4.        "_:\\p.txt"
  5.     };

Pero en el caso que se utilice un arreglo de punteros (que no es lo mismo que declarar listado[3][10]) lo ideal es utilizar memoria dinámica y luego guardar el contenido.
Y por cierto, si te fijas, 10 no es suficiente para las cadenas que quieres guardar con strcpy.

Este post (http://foro.elhacker.net/programacion_cc/reservar_memoria_para_punteros_en_c-t294505.0.html) seguramente sirva.

Saludos!