float value;
Code:
scanf("%f", &libry[count++].value);
I know I can replace the scanf() with atoi and fgets but how big should the buffer be? I'm not too sure how fgets works so I have a few questions concerning fgets.

Code:
fgets(str, 40, stdin)
The above line of code would read in 40 - 1 characters correct? If so what is stored in str[39]?null terminator?

If all 39 characters are read than does the newline stay in the input buffer?