Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema array de cadenas

Estas en el tema de Problema array de cadenas en el foro de C/C++ en Foros del Web. Buenas a todos, necesito rellenar un array de cadenas, donde guardare los nombres de varios equipos, numero de equipos que seran introduccidos por teclado. He ...
  #1 (permalink)  
Antiguo 12/10/2010, 07:11
 
Fecha de Ingreso: septiembre-2009
Mensajes: 39
Antigüedad: 14 años, 7 meses
Puntos: 0
Problema array de cadenas

Buenas a todos, necesito rellenar un array de cadenas, donde guardare los nombres de varios equipos, numero de equipos que seran introduccidos por teclado.

He declarado el array nombre de equipos asi:

char *nombreequipos[numero];
char nombre[30];

y a la hora de rellenarlo:

declaro un cont=0;

while (cont<numero)
{
printf( "\nEscribe un nombre: " );
fflush( stdin );
nombreequipos[cont] = gets (nombre);
cont++;
}

Poro cuando muestro el contenido de nombreequipos[0] con printf siempre me muestra el último que he metido como si no me lo guardara todos, alguna solucion? que hago mal?
  #2 (permalink)  
Antiguo 12/10/2010, 08:51
 
Fecha de Ingreso: octubre-2010
Ubicación: Edo. de México
Mensajes: 94
Antigüedad: 13 años, 6 meses
Puntos: 9
Respuesta: Problema array de cadenas

necesitas aprender a manejar bien esto de los punteros, mira te dejo el link de un pdf en el que explican el manejo de punteros desde cero, hasta punteros de punteros, leelo y ahi me dices como te fue con tu problema.

http://profesores.fi-b.unam.mx/cintia/pdf_sp.pdf
  #3 (permalink)  
Antiguo 12/10/2010, 09:20
 
Fecha de Ingreso: septiembre-2009
Mensajes: 39
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problema array de cadenas

Me lo leere con calma esta semana, pero si pudieras decirme de momento como arreglo eso que tengo que entregar el ejercicio mañana te lo agradecería, por cierto.. tiene muy buena pinta ese manual, aunque el puts ese no lo he visto nunca.

Un saludo
  #4 (permalink)  
Antiguo 12/10/2010, 09:29
 
Fecha de Ingreso: octubre-2010
Ubicación: Edo. de México
Mensajes: 94
Antigüedad: 13 años, 6 meses
Puntos: 9
Respuesta: Problema array de cadenas

bueno aqui te dejo un ejemplo que hice basdo en tu programita, veras que imprimo las direcciones de memoria para que te des una idea de como se manejan:

Código c:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAX 5
  5. #define CARACTERES 50
  6.  
  7. int main (void){
  8.   char *espacio;
  9.   char *nombreequipos[MAX];
  10.   char nombre[CARACTERES];
  11.   int cont=0;
  12.  
  13.   espacio = malloc(CARACTERES * MAX * sizeof(char));
  14.  
  15.   while(cont < MAX){
  16.     nombreequipos[cont] = espacio + CARACTERES * cont;
  17.     printf("direccion[%d]: %dh\n", cont, nombreequipos[cont]);
  18.     cont++;
  19.   }
  20.  
  21.   printf("\n\nObteniendo nombres..\n");
  22.   cont = 0;
  23.   while (cont < MAX){
  24.     printf("direccion[%d]: %dh\n", cont, nombreequipos[cont]);
  25.     bzero((char *)&nombre, sizeof(nombre));
  26.     printf( "Escribe un nombre: " );
  27.     gets(nombreequipos[cont]);
  28.     cont++;
  29.   }
  30.  
  31.   cont = 0;
  32.   while(cont < MAX ){
  33.     printf("nombre[%i]: %s\n", cont, nombreequipos[cont]);
  34.     cont ++;
  35.   }
  36.   free(espacio);
  37. }

My salida
Código:
direccion[0]: 167997448h
direccion[1]: 167997498h
direccion[2]: 167997548h
direccion[3]: 167997598h
direccion[4]: 167997648h


Obteniendo nombres..
direccion[0]: 167997448h
Escribe un nombre: Espero esto
direccion[1]: 167997498h
Escribe un nombre: te
direccion[2]: 167997548h
Escribe un nombre: haya sido
direccion[3]: 167997598h
Escribe un nombre: de mucha
direccion[4]: 167997648h
Escribe un nombre: ayuda
nombre[0]: Espero esto
nombre[1]: te
nombre[2]: haya sido
nombre[3]: de mucha
nombre[4]: ayuda
  #5 (permalink)  
Antiguo 12/10/2010, 10:56
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: Problema array de cadenas

por que en vez de declarar un un puntero a un vector no declaras una matriz (aunque es casi lo mismo):
Código C++:
Ver original
  1. char nom[5][100];    // 5 nombres de maximo 100 caracteres
  2. //Lees
  3.   for(int i=0;i<5;i++){
  4.           cout<<"Nombre: ";
  5.           gets(nom[i]);
  6.   }
  7. //Imprimes
  8.  for(int i=0;i<5;i++){
  9.           cout<<nom[i]<<endl;
  10.   }
Espero haber ayudado!!
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse
  #6 (permalink)  
Antiguo 14/10/2010, 17:10
 
Fecha de Ingreso: septiembre-2009
Mensajes: 39
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problema array de cadenas

muchas gracias a todos, al final lo hice con vectores, me leeré el tutorial este de punteros que tiene una pinta de la leche, saludos

Etiquetas: cadenas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:43.