then input will be truncated, which is a theroretical difficulty with fgets
Which is also why fgets leaves the newline in the string. If it's not there (and the stream isn't at eof) then the line was truncated.