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