Ver Mensaje Individual
  #9 (permalink)  
Antiguo 12/06/2011, 06:08
Amphoth3ra
 
Fecha de Ingreso: mayo-2011
Mensajes: 26
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: fgets me guarda una línea innecesaria

Les cuento que ya solucioné mi problema, lo que necesitaba era algo que pudiera sacarme el salto de línea del fgets, para eso en otro foro consulté y me dijeron que usara la función strchr, para poder reemplazar el caracter de salto de línea con el carácter de fin de cadena.

El programa quedaría así:
Código C:
Ver original
  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<cstring>
  4.  
  5. struct dvd {
  6.     char name[255];
  7.     char genero[50];
  8.     int discs_number;
  9.     int length;
  10. };
  11.  
  12. int main()
  13. {
  14.     struct dvd temporal;
  15.     char discs_number[2];
  16.     char length[4];
  17.     char *pch;
  18.  
  19.     printf("Nombre del DVD\n");
  20.     fgets(temporal.name, 255, stdin);
  21.     // Buscas la posicion del caracter nueva linea (10) en la cadena
  22.     pch = strchr(temporal.name, 10);
  23.     // Si la encontro, reemplazas nueva linea con nulo, que es el fin
  24.     // de cadena ('\0')
  25.     if (pch != NULL)
  26.     {
  27.         *pch = '\0';
  28.     }
  29.  
  30.     printf("%s\n", temporal.name);
  31.  
  32.     printf("Género del DVD\n");
  33.     fgets(temporal.genero, 50, stdin);
  34.     pch = strchr(temporal.genero, 10);
  35.     if (pch != NULL)
  36.     {
  37.         *pch = '\0';
  38.     }
  39.  
  40.     printf("%s\n", temporal.genero);
  41.  
  42.     printf("Número de discos del DVD\n");
  43.     fgets(discs_number, 2, stdin);
  44.  
  45.     temporal.discs_number = atoi(discs_number);
  46.  
  47.     printf("%d\n", temporal.discs_number);
  48.  
  49.     printf("Duración del DVD\n");
  50.  
  51.     while(getchar() != '\n');
  52.     fgets(length, 4, stdin);
  53.  
  54.     temporal.length = atoi(length);
  55.  
  56.     printf("%d\n", temporal.length);
  57.  
  58.     printf("%s %s %d %d", temporal.name, temporal.genero, temporal.discs_number, temporal.length);
  59.     return(0);
  60. }

De todas maneras igual se agradece la ayuda =)

Saludos!