I\'ve some doubts about fgets. From what I know, it adds \"\\n\" at the end of the string, and not \"\\0\". So if I write this code:
fgets(buff,2,stdin);
pri
char * fgets ( char * str, int num, FILE * stream );
Reads characters from input stream and stores them as a C string into str until (num-1) characters have been read or either a newline or the end-of-file is reached, whichever happens first.
A newline character makes fgets stop reading, but it is considered a valid character by the function and included in the string copied to str.
A terminating null character ('\0') is automatically appended after the characters copied to str.
According to man page it clearly given :
char *fgets(char *s, int size, FILE *stream);
fgets() reads in at most one less than size characters from stream and stores them into the buffer pointed to by s. Reading stops after an EOF or a newline. If a newline is read, it is stored into the buffer. A '\0' is stored after the last character in the buffer.
It must terminate the string, so yes it will always add '\0'
at the end. However, fgets
might not always add the newline, if it doesn't fit. I recommend this reference page for fgets.