Saludos a todos.
Necesito ayuda. Tengo un array de char que guarda un nombre. Su contenido cambia con cada vuelta de un bucle.
char nombre[120];
Necesito guardar en otro array todos los nombres que voy obteniendo a través de ese nombre[120].
Sería algo como un array de arrays. ¿Ideas?
gracias.
Mod: Tema modificado, evita usar mayúsculas a menos que sea necesario
Yo utilizaría vectores http://www.cplusplus.com/reference/vector/vector/ aunque puedes usar char ** pero tienes que saber el tamaño exacto.
vector<char[120]> nombres;
nombres.push(nombre);
No mandes mas mensajes privados a gente aleatoria. :rolleyes:
Saludos
Si necesitas X numeros de nombres con eso te puede servir:
#include <stdio.h>
#include <stdlib.h>
#define MAXNOMBRES 5
#define MAXLETRAS 120
int main (){
int contador=0;
char nombre[MAXNOMBRES][MAXLETRAS] = {0};
while ( contador < MAXNOMBRES ){
scanf ( "%119[^\n]%*c", &nombre[contador][0] );
contador ++;
}
printf("\n");
for ( contador = 0; contador < MAXNOMBRES; contador++ ){
printf("%s\n", &nombre[contador][0]);
}
getchar();
return 0;
}
Como ves ese "array de arrays" uso un contador, ese es el truco.
Si necesitas mas nombres pon un numero mayor en MAXNOMBRES.
Esta criatura: scanf ( "%119[^\n]%*c", &nombre[contador][0] ); lee maximo 119 letras, ignora el enter y pone el nulo al fin del string, un chollo. El problema es que si pasas de 119 caracteres, el resto se queda en el buffer. Para algo mas fiable debes limpiar el buffer después de cada lectura, pero si no pasas de 119 caracteres no hay problema.
Por otro lado si necesitas un programa para leer una cantidad de nombres indeterminados debes aprender a usar listas abiertas simples junto con memoria dinamica. Eso te permitiria leer "infinitos" nombres.
Suerte ;)
El problema es que no recojo los nombres por pantalla.
entonces yo tengo nombres[128];
y necesito otro listado[100] que vaya guardando los nombres:
primera vuelta:
listado[0]=nombres[128];
segunda vuelta:
listado[1]=nombres[128];
char Jose[128] = "Jose";
char nombre[MAXNOMBRES][128] = 0;
strcpy(nombre[0],Jose);
strcpy(nombre[1],Maria);
...
Con vectores es mas fácil y no importa el tamaño
He probado como dices los vectores con la función strcpy y no me da error.
char listado[100][128]
Pero si intento mostrar el contenido del nuevo vector me dice "El programa dejó de funcionar"
for (i=0;i<100;i++){
printf("%s\n", ficheros[i][128]);
}
Gracias por vuestra ayuda.
Quita el 128
printf("%s\n", ficheros[i][128]);
Porque no utilizas string http://www.cplusplus.com/reference/string/string/?
En plan:
vector<string> nombres = {"hola","Maria"};
nombres[3] = "Jose";
for(int i =0;i<nombres.size();i++){
printf("%s\n",nombres[i]);
}
No puedo usar string, porque estoy en C, no C++
Creo que tendré que recurrir a vectores dinámicos... he probado lo siguiente:
for (i=0;i<100;i++){
for (j=0;j<128;j++){
printf("%c", ficheros[i][j]);
}
printf("\n");
}
Y he visto que rellena con caracteres aleatorios el array hasta los 128 caracteres.
¿Alguna idea? No se me ocurre más..