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)
| | |-+  ALguien me ayuda a que esto salga? prog C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ALguien me ayuda a que esto salga? prog C  (Leído 3,661 veces)
m4rkk0s

Desconectado Desconectado

Mensajes: 44


Ver Perfil
ALguien me ayuda a que esto salga? prog C
« en: 3 Julio 2012, 17:39 pm »

antes uqe nada gracias por mirar el post...
 
Código
  1. #include<stdio.h>
  2. #include<conio.h>
  3.  
  4. int main(void){
  5. size_t largo;
  6.    printf("Ingrese la cantidad de personas en : ");
  7.    fflush(stdin);
  8.    scanf(" %d",&largo); //asigno el valor a largo
  9.    //printf("El largo ingresado es: %d",largo);
  10.  
  11.    //Creo el vector con el tamaño elejido
  12.    char vector1[40][largo];
  13.    int i;
  14.    //Voy llenando el vector con un ciclo for
  15.  
  16.    for (i=1;i<largo;i++){
  17.        printf("\nIngrese el valor para la posicion %d: ",i);
  18.        fflush(stdin);
  19.        gets( vector1[i]);
  20.    }
  21.  
  22.    //Ahora imprimo el vector en cada posicion
  23.    for (i=1;i<largo;i++){
  24.        printf("Vector[%d]: %s \n",i,vector1[i]);
  25.  
  26.    }
  27. }
  28.  

cuando lo ejecuto... no me salen los nombres como yo los pongo me los imprime como todos juntos... y me borra los anteriores...

este lo kree aparte para ver como funcionaba en realidad esto esta dentro de un struc.. pero si no logro hacer que en el vector me almacene los datos completos no los voy a poder ubivcar en el struc..

me sale algo asi cuando lo ejecuto (cargo estos datos hola, como, estas,)
vector[1]=holacomoestas
vector[2]=comoestas
vector[3]=estas
algo asi y no veo el problema.. si algueirn me ayuda desde ya muchas gracias y disculpen la molestia
Código
  1.  


« Última modificación: 3 Julio 2012, 17:55 pm por m4rkk0s » En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: ALguien me ayuda a que esto salga? prog C
« Respuesta #1 en: 3 Julio 2012, 17:50 pm »

Por favor, intenta poner el código entre etiquetas GeSHi para que se vea bien, ya que sino algunos subíndices con contenido "i" se pierden y dificulta la lectura del código...

Saludos.


En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: ALguien me ayuda a que esto salga? prog C
« Respuesta #2 en: 3 Julio 2012, 18:01 pm »

Bien, veo que ya has puesto el código entre GeSHi.

No puedes inicializar la cadena de caracteres así (poniéndole de tamaño "largo"). Para eso existe la memoria dinámica.

Sería tal y como te dije en http://foro.elhacker.net/programacion_cc/ayuda_con_el_uso_de_malloc_en_char_c-t365940.0.html .

Por otra parte, veo que a los vectores les das valores desde "vector[1]". Debes saber que los vectores empiezan por 0, no por el 1.

Por cierto, te recomiendo no declarar variables en mitad del código. A la larga puede resultar algo lioso cuando trabajes con códigos más extensos y darte problemas.

He editado tu código:

Código
  1.  
  2. #include<stdio.h>
  3. #include<conio.h>
  4.  
  5. int main(){
  6.    int largo;
  7.    char **vector1;
  8.    int i;
  9.    printf("Ingrese la cantidad de personas en : ");
  10.    scanf("%d",&largo);
  11.    fflush(stdin); // Después de scanf si vas a usar gets() encuentras problemas. Por ello, usamos fflush(stdin); (aunque yo recomiendo usar getchar() ).
  12.  
  13.   vector1 = (char**)malloc(largo * sizeof(char*)); //Inicializamos filas
  14.   for(i = 0; i < largo; i++) vector1[i] = (char*)malloc(40 * sizeof(char)); //Inicializamos columnas
  15. /* Con las dos líneas anteriores, hemos creado una matriz de "largo" número de filas, cada cual tiene 40 columnas (40 espacios). */
  16.  
  17.    for (i=0;i<largo;i++){
  18.        printf("\nIngrese el valor para la posicion %d: ",i);
  19.        gets( vector1[i]); //Pedimos cadenas de caracteres
  20.    }
  21.  
  22.  
  23.    for (i=0;i<largo;i++){
  24.        printf("Vector[%d]: %s \n",i+1,vector1[i]); //Imprimimos el contenido
  25.  
  26.    }
  27.  
  28.    free(vector1);
  29.    return 0;
  30. }
  31.  


Saludos.

« Última modificación: 3 Julio 2012, 19:13 pm por DickGumshoe » En línea

m4rkk0s

Desconectado Desconectado

Mensajes: 44


Ver Perfil
Re: ALguien me ayuda a que esto salga? prog C
« Respuesta #3 en: 3 Julio 2012, 18:50 pm »

NOOO!!! SOS UN GROSO... TENIA VARIOS ERRORES PERO FUERA DE ESO... AHORA COMPRENDO EL TEMA DE MALLOC CORRECTAMENTE... VA LO ENTIENDO MAS... VOY A EJERCITAR VARIOS EJEMPLOS CON MALLOS ASI ME ACOSTUMBRO A USARLO... Y DE NUEVO... MILLONES DE GRACIAS.. ME ESTAS SALVANDO EL TRABAJO... ES UQE ME HAN EHCHO A HACER OCSAS Q NO SE COMO HACER POR ELLOS SUFRO Y ME FRUSTRO.. PERO GRACIAS!! EN SERIO MCUHAS GRACIAS
En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: ALguien me ayuda a que esto salga? prog C
« Respuesta #4 en: 3 Julio 2012, 18:52 pm »

De nada  :D
En línea

xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: ALguien me ayuda a que esto salga? prog C
« Respuesta #5 en: 3 Julio 2012, 19:04 pm »

buenas, intentando resolver tu duda me he puesto a hacerlo y me ha ido bien para refrescar el concepto de los apuntadores. lo he hecho de una manera distinta a la solucion de arriba, declarando toda la memoria en un solo bloque y luego asignando direcciones de memoria al vector de apuntadores. te dejo el codigo por si te sirve de ayuda:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define MAX 30
  6.  
  7. void limpiarstdin();
  8.  
  9. int main(int argc, char** argv)
  10. {
  11. char *datos, **vector;
  12. int total, i;
  13.  
  14. printf("Inserte el numero de palabras: ");
  15. scanf("%d", &total);
  16. limpiarstdin();
  17.  
  18. //se decalara datos como todo el bloque de memoria
  19. datos=(char*)malloc(MAX*total*sizeof(char));
  20. memset(datos, '\0', sizeof(datos));
  21.  
  22. //vector es un array de apuntadores a char
  23. vector=(char**)malloc(total*sizeof(char*));
  24.  
  25. //asignamos a cada apuntador de "vector" la direccion de memoria que le toque
  26. for (i=0; i<total; i++)
  27. *(vector+i)=(datos+MAX*i);
  28.  
  29. printf("\nInserte las palabras:\n");
  30. for (i=0; i<total; i++)
  31. fgets(*(vector+i), MAX-1, stdin);
  32.  
  33. printf("\nLas palabras son:\n");
  34. for (i=0; i<total; i++)
  35. printf("%s", *(vector+i));
  36.  
  37. printf("\n");
  38. free(vector);
  39. free(datos);
  40. return 0;
  41. }
  42.  
  43. //solucion chapuza ya que lo tipico de getch() nunca he conseguido que me funcione xD
  44. void limpiarstdin()
  45. {
  46. char basura[8];
  47. fgets(basura, 8, stdin);
  48. }
« Última modificación: 3 Julio 2012, 19:26 pm por xiruko » En línea

m4rkk0s

Desconectado Desconectado

Mensajes: 44


Ver Perfil
Re: ALguien me ayuda a que esto salga? prog C
« Respuesta #6 en: 3 Julio 2012, 19:22 pm »

XIRUKO muchas gracias por tomarte el tiempo de responder mis pregunta realmente te lo agradezco....

ahora lo veo bien al codigo, va lo estudio pero desde ya muchas gracias por tomarte el tiempo y por prestarme de tu tiempo para ayudarme... un abrazo e imenzamente agradecido..
En línea

m4rkk0s

Desconectado Desconectado

Mensajes: 44


Ver Perfil
Re: ALguien me ayuda a que esto salga? prog C
« Respuesta #7 en: 3 Julio 2012, 21:45 pm »

y sigue el pesado preguntando.... jajaj

pero no me sale.. no imprime el vector.. va en realida lo imprime
Código
  1. fprintf(miarchivo, "CC263_NEW_%s_%s_%s_%s = %s,%s,%s \n",&nuevo_proyecto.nombre, &nuevo_proyecto.nombreproducto,nuevo_proyecto.nombrepet,&nuevo_proyecto.miembrorol,&nuevo_proyecto.miembro,vector1[i]);
va... lo imprime... pero no como quiero q lo imprima...yo quiero q me los muestre todo slo datos que obtuve.. probe otras formas y me imprimio bien los datos.. pero por ejemplo tenia q poner
Código
  1. >fprintf(miarchivo, "CC263_NEW_%s_%s_%s_%s = %s,%s,%s,%s,%s,%s \n",&nuevo_proyecto.nombre, &nuevo_proyecto.nombreproducto,nuevo_proyecto.nombrepet,&nuevo_proyecto.miembrorol,&nuevo_proyecto.miembro,vector1[0],vector1[1],vector1[2],vector1[3],vector1[4],vector1[5],vector1[6]);

para uq lo imprima.. pero si no okupaba todos los vectores.. ni imprime me tira error...

como seria le kreo un for?
En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: ALguien me ayuda a que esto salga? prog C
« Respuesta #8 en: 3 Julio 2012, 21:54 pm »

Hola! el for lo tenes que hacer solo para vector1. Despues de guardar todos los miembros de la estructura en el archivo, creas el bucle para guardar lo datos del vector1


Saludos
En línea

Ahorrate una pregunta, lee el man
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Alguien me ayuda a crackear esto?
Ingeniería Inversa
polob 6 3,292 Último mensaje 5 Agosto 2010, 20:59 pm
por polob
[Ayuda] Hacer que mi aplicación salga en la barra de tareas con BorderStyle = 0
Programación Visual Basic
DeSsy 2 3,748 Último mensaje 17 Enero 2011, 12:52 pm
por DeSsy
Como se hace para que en el Panel de control salga esto:
Dudas Generales
iShutdown 5 5,956 Último mensaje 19 Febrero 2012, 01:03 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines