modificar arreglo de cadena de caracteres

Iniciado por kworld, 31 Mayo 2010, 10:18 AM

0 Miembros y 1 Visitante están viendo este tema.

kworld

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();
       
}
       


Gallu

#1
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

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();

}


Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.

Littlehorse

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 seguramente sirva.

Saludos!

An expert is a man who has made all the mistakes which can be made, in a very narrow field.