Estoy practicando un poco de fgets con cadenas y me he encontrado con algo bastante extraño, que consiste en que las cadenas que yo entrego de entrada, me salen correctas, pero me salen con una línea de más.
Les explico con código en mano. Esta aplicación pretende guardar en una estructura temporal cuatro datos
1) El nombre de un DVD
2) El género de un DVD
3) El número de discos de un DVD
4) La duración total del DVD en minutos
Código C:
Ver original#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct dvd {
char name[255];
char genero[50];
int discs_number;
int length;
};
int main()
{
struct dvd temporal;
char discs_number[2];
char length[4];
fgets(temporal.
name, 255, stdin
);
printf("%s\n", temporal.
name);
fgets(temporal.
genero, 50, stdin
);
printf("%s\n", temporal.
genero);
printf("Número de discos del DVD\n"); fgets(discs_number
, 2, stdin
);
temporal.
discs_number = atoi(discs_number
);
printf("%d\n", temporal.
discs_number);
temporal.
length = atoi(length
);
printf("%d\n", temporal.
length);
return(0);
}
Cuando ejecuto el programa, si introducen el nombre del DVD, la cadena que se me regresa es correcta cuando yo haga el printf, pero automáticamente se me salta una línea. Lo mismo pasa con el género del DVD.
Los campos de número de discos y de duración del DVD funcionan correctamente.
Pruébenlo con estos datos:
Nombre: Batman
Género: Acción
Número de discos: 1
Duración; 126
¿Que puede estar pasando? (por cierto, mi código está compilado con GCC)
Saludos!