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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


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

Desconectado Desconectado

Mensajes: 5


Ver Perfil
ayuda programa!!
« en: 16 Septiembre 2012, 20:28 pm »

hola!!
estoy haciendo un programa y por mas que llevo horas dandole vueltas no encuentro el problema. necesito ayuda!
la idea es que reciba un texto como el que sigue y lo divida en vectores, uno por cada linea

r0001023, PÉREZ Juan, Física, 8
s25418-2, DOMÍNGUEZ Domingo, Literatura, 9
w0412346, FULANO Fidel, Física, 10
q23411-t, ZUTANO Jose, Geografía, 7

lo ejecuto de la forma ./cortastring<texto.csv

y me imprime:
23411-t, ZUTANO Jose, Geografía, 7

lo cual esta bastante bien, pero me falta la "q" que hay antes de todo eso y no entiendo por que no la toma en el vector

este es el codigo:
Código
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4.  
  5. int main (void)
  6. {
  7. /*Declaracion de variables*/
  8.  char verif;  
  9.  int i=0;
  10.  char matrix [1500][80];
  11.  
  12. /*Carga las variables, comprobando que no termine el archivo y que no se exeda el tamaño de filas de la matriz*/  
  13.  while(i<1500 && (verif=getchar())!=EOF)
  14.    {fgets(matrix[i],80,stdin);
  15.  
  16. /*imprimo el vector 3 para ver si todo salio bien*/
  17. puts(matrix[3]);
  18.  return 0;
  19. }
}


En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: ayuda programa!!
« Respuesta #1 en: 16 Septiembre 2012, 20:48 pm »

Buenas rodrigo_103 , me parece que es , por el getchar que tienes en el bucle porque se come siempre la primera letra , ¿no crees que sería mejor esto?
Código
  1. /*Carga las variables, comprobando que no termine el archivo y que no se exeda el tamaño de filas de la matriz*/  
  2.  while(i<1500 && fgets(matrix[i],80,stdin)!=NULL)
  3.    {
  4.     ++i;
  5.    }
Referencia de función fgets , valores que retorna:
Return Value
On success, the function returns the same str parameter.
If the End-of-File is encountered and no characters have been read, the contents of str remain unchanged and a null pointer is returned.
If an error occurs, a null pointer is returned.
Use either ferror or feof to check whether an error happened or the End-of-File was reached.

¡Un saludo y bienvenido al foro!


« Última modificación: 16 Septiembre 2012, 21:04 pm por avesudra » En línea

Regístrate en
rodrigo_103

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: ayuda programa!!
« Respuesta #2 en: 16 Septiembre 2012, 21:28 pm »

Muchas gracias por tu rapida y completa respuesta y la bienvenida.

ya no tengo ese problema con las letras iniciales, pero ahora, cuando imprimo un vector, por ejemplo el 0, me imprime el que corresponderia que fuera el vector 1, si pido el 1, me imprime el 3, si pido el 2 me imprime el 5, si pido el 3 el 7 y asi sucesivamente.

en el caso del codigo que sigue imprime:

q23411-t, ZUTANO Jose, Geografía, 7

Código
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4.  
  5. int main (void)
  6. {
  7. /*Declaracion de variables*/
  8.  int i=0;
  9.  char matrix [1500][80];
  10.  
  11. /*Carga las variables, comprobando que no termine el archivo y que no se exeda el tamaño de filas de la matriz*/  
  12.  while(i<1500 && fgets(matrix[i],80,stdin)!=NULL)
  13.    {fgets(matrix[i],80,stdin);
  14.     i++;}
  15.  
  16.  
  17. /*imprimo el vector 1 para ver si todo salio bien*/
  18. puts(matrix[1]);
  19.  return 0;
  20. }
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: ayuda programa!!
« Respuesta #3 en: 16 Septiembre 2012, 21:52 pm »

Es que has puesto dos fgets , con el que está en el bucle puesto ya basta. Si retorna NULL pues sale del bucle , porque le metes EOF que en windows es Ctrl + Z , pero si nó pones Ctrl + Z , entra al bucle y ejecuta dos fgets , por lo que a la misma variable de i le asignas su siguiente en la lista al ejecutar dos fgets. Pon solamente uno.
En línea

Regístrate en
rodrigo_103

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: ayuda programa!!
« Respuesta #4 en: 16 Septiembre 2012, 21:58 pm »

ahora funciona perfectamente!! mil gracias! :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con programa
Software
Zorronde 1 1,395 Último mensaje 12 Noviembre 2012, 23:11 pm
por adgellida
Ayuda Programa C++
Programación C/C++
chinoman1993 2 2,435 Último mensaje 9 Octubre 2012, 19:10 pm
por chinoman1993
ayuda con programa asm
ASM
luxerymc 1 2,806 Último mensaje 31 Octubre 2012, 15:54 pm
por Firos
Ayuda programa
Programación C/C++
Bus_19 4 2,650 Último mensaje 11 Noviembre 2012, 17:09 pm
por Bus_19
Ayuda porfavorsito con programa en c++
Programación C/C++
califvv 4 2,414 Último mensaje 5 Diciembre 2012, 00:40 am
por flony
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines