Test Foro de elhacker.net SMF 2.1

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?


#include <stdio.h>

int main()
{
char* listado[] = {
        "_:\\mi_listado.txt",
        "_:\\notas.txt",
        "_:\\p.txt"
};

int i;

for (i=0; i < 3; ++i)
{
     listado[i][0] = 'C';
     printf("%s\n",listado[i]);
}

getchar();
       
}
       

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:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
char listado[3][10];

strcpy(listado[0], "_:\\mi_listado.txt");
strcpy(listado[1], "_:\\notas.txt");
strcpy(listado[2], "_:\\p.txt") ;
 

int i;

for (i=0; i < 3; i++) {
     listado[i][0] = 'C';
     printf("%s\n",listado[i]);
}

getchar();

}


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:


char listado[3][19]= {
       "_:\\mi_listado.txt",
       "_:\\notas.txt",
       "_:\\p.txt"
    };


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!