Autor
|
Tema: ALguien me ayuda a que esto salga? prog C (Leído 3,694 veces)
|
m4rkk0s
Desconectado
Mensajes: 44
|
antes uqe nada gracias por mirar el post... #include<stdio.h> #include<conio.h> int main(void){ size_t largo; printf("Ingrese la cantidad de personas en : "); scanf(" %d",&largo ); //asigno el valor a largo //printf("El largo ingresado es: %d",largo); //Creo el vector con el tamaño elejido char vector1[40][largo]; int i; //Voy llenando el vector con un ciclo for for (i=1;i<largo;i++){ printf("\nIngrese el valor para la posicion %d: ",i ); } //Ahora imprimo el vector en cada posicion for (i=1;i<largo;i++){ printf("Vector[%d]: %s \n",i ,vector1 [i ]); } }
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
|
|
« Última modificación: 3 Julio 2012, 17:55 pm por m4rkk0s »
|
En línea
|
|
|
|
DickGumshoe
|
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
|
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: #include<stdio.h> #include<conio.h> int main(){ int largo; char **vector1; int i; printf("Ingrese la cantidad de personas en : "); fflush(stdin ); // Después de scanf si vas a usar gets() encuentras problemas. Por ello, usamos fflush(stdin); (aunque yo recomiendo usar getchar() ). vector1 = (char**)malloc(largo * sizeof(char*)); //Inicializamos filas for(i = 0; i < largo ; i ++) vector1 [i ] = (char*)malloc(40 * sizeof(char)); //Inicializamos columnas /* Con las dos líneas anteriores, hemos creado una matriz de "largo" número de filas, cada cual tiene 40 columnas (40 espacios). */ for (i=0;i<largo;i++){ printf("\nIngrese el valor para la posicion %d: ",i ); gets( vector1 [i ]); //Pedimos cadenas de caracteres } for (i=0;i<largo;i++){ printf("Vector[%d]: %s \n",i +1,vector1 [i ]); //Imprimimos el contenido } return 0; }
Saludos.
|
|
« Última modificación: 3 Julio 2012, 19:13 pm por DickGumshoe »
|
En línea
|
|
|
|
m4rkk0s
Desconectado
Mensajes: 44
|
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
|
|
|
|
|
xiruko
Desconectado
Mensajes: 438
|
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: #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 30 void limpiarstdin(); int main(int argc, char** argv) { char *datos, **vector; int total, i; printf("Inserte el numero de palabras: "); limpiarstdin(); //se decalara datos como todo el bloque de memoria datos =(char*)malloc(MAX *total *sizeof(char)); memset(datos , '\0', sizeof(datos )); //vector es un array de apuntadores a char vector =(char**)malloc(total *sizeof(char*)); //asignamos a cada apuntador de "vector" la direccion de memoria que le toque for (i=0; i<total; i++) *(vector+i)=(datos+MAX*i); printf("\nInserte las palabras:\n"); for (i=0; i<total; i++) fgets(*(vector +i ), MAX -1, stdin ); printf("\nLas palabras son:\n"); for (i=0; i<total; i++) return 0; } //solucion chapuza ya que lo tipico de getch() nunca he conseguido que me funcione xD void limpiarstdin() { char basura[8]; }
|
|
« Última modificación: 3 Julio 2012, 19:26 pm por xiruko »
|
En línea
|
|
|
|
m4rkk0s
Desconectado
Mensajes: 44
|
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
Mensajes: 44
|
y sigue el pesado preguntando.... jajaj pero no me sale.. no imprime el vector.. va en realida lo imprime 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 >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
Mensajes: 373
|
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
|
|
|
|
|