elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda array char
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda array char  (Leído 3,734 veces)
LAULAU12

Desconectado Desconectado

Mensajes: 5


Ver Perfil
ayuda array char
« en: 24 Enero 2015, 20:56 pm »

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


« Última modificación: 24 Enero 2015, 21:02 pm por engel lex » En línea

patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: ayuda array char
« Respuesta #1 en: 24 Enero 2015, 21:54 pm »

Yo utilizaría vectores http://www.cplusplus.com/reference/vector/vector/ aunque puedes usar char ** pero tienes que saber el tamaño exacto.

Código
  1. vector<char[120]> nombres;
  2. nombres.push(nombre);


No mandes mas mensajes privados a gente aleatoria.  :rolleyes:

Saludos


« Última modificación: 24 Enero 2015, 21:55 pm por patilanz » En línea

vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: ayuda array char
« Respuesta #2 en: 24 Enero 2015, 22:01 pm »

Si necesitas X numeros de nombres con eso te puede servir:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAXNOMBRES 5
  4. #define MAXLETRAS 120
  5.  
  6. int main (){
  7.    int contador=0;
  8.    char nombre[MAXNOMBRES][MAXLETRAS] = {0};
  9.  
  10.    while ( contador < MAXNOMBRES ){
  11.        scanf ( "%119[^\n]%*c", &nombre[contador][0] );
  12.  
  13.        contador ++;
  14.    }
  15.  
  16.  
  17.    printf("\n");
  18.    for ( contador = 0; contador < MAXNOMBRES; contador++ ){
  19.        printf("%s\n", &nombre[contador][0]);
  20.    }
  21.  
  22.    getchar();
  23.    return 0;
  24. }
  25.  
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 ;)
En línea

LAULAU12

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: ayuda array char
« Respuesta #3 en: 24 Enero 2015, 22:33 pm »

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];
En línea

patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: ayuda array char
« Respuesta #4 en: 24 Enero 2015, 23:22 pm »

Código
  1. char Jose[128] = "Jose";
  2. char nombre[MAXNOMBRES][128] = 0;
  3. strcpy(nombre[0],Jose);
  4. strcpy(nombre[1],Maria);
  5. ...
  6.  

Con vectores es mas fácil y no importa el tamaño
En línea

LAULAU12

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: ayuda array char
« Respuesta #5 en: 24 Enero 2015, 23:33 pm »

He probado como dices los vectores con la función strcpy y no me da error.

Código:
char listado[100][128]

Pero si intento mostrar el contenido del nuevo vector me dice "El programa dejó de funcionar"

Código:
for (i=0;i<100;i++){
printf("%s\n", ficheros[i][128]);
}



Gracias por vuestra ayuda.
En línea

patilanz


Desconectado Desconectado

Mensajes: 481

555-555-0199@example.com


Ver Perfil WWW
Re: ayuda array char
« Respuesta #6 en: 25 Enero 2015, 00:05 am »

Quita el 128
Código
  1. printf("%s\n", ficheros[i][128]);

Porque no utilizas string http://www.cplusplus.com/reference/string/string/?

En plan:

Código
  1. vector<string> nombres = {"hola","Maria"};
  2. nombres[3] = "Jose";
  3. for(int i =0;i<nombres.size();i++){
  4.     printf("%s\n",nombres[i]);
  5. }
  6.  
En línea

LAULAU12

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: ayuda array char
« Respuesta #7 en: 25 Enero 2015, 00:13 am »

No puedo usar string, porque estoy en C, no C++

Creo que tendré que recurrir a vectores dinámicos... he probado lo siguiente:

Código:
	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..
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Error al definir array char en DEV-CPP
Programación C/C++
DA KILLER 6 3,876 Último mensaje 27 Febrero 2012, 13:39 pm
por satu
Funcion que retorne char array? « 1 2 »
Programación C/C++
juancaa 13 17,448 Último mensaje 19 Julio 2012, 16:23 pm
por rir3760
substring en array char « 1 2 »
Programación C/C++
soyloqbuskas 13 7,055 Último mensaje 22 Septiembre 2012, 00:33 am
por rir3760
return array char en C
Programación C/C++
soyloqbuskas 2 1,820 Último mensaje 29 Septiembre 2015, 05:23 am
por Luchoz95
Ayuda por favor! Con c, unsigned char y array de char !
Programación C/C++
Yurasamai 1 2,851 Último mensaje 24 Noviembre 2015, 09:14 am
por avesudra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines