The 999th character is at offset 998. The offset 1000 is always '\0'. Take a look:
Code:
#include <stdio.h>
int main( void )
{
char buff[11];
fgets( buff, sizeof buff, stdin );
printf( "%s\n", buff );
}
Code:
$ gcc -g -o test test.c
$ gdb -q ./test
Reading symbols from test...done.
(gdb) l
1 #include <stdio.h>
2
3 int main( void )
4 {
5 char buff[11];
6
7 fgets( buff, sizeof buff, stdin );
8 printf( "%s\n", buff );
9 }
(gdb) b 7
Breakpoint 1 at 0x751: file test.c, line 7.
(gdb) r
Starting program: .../test
Breakpoint 1, main () at test.c:7
7 fgets( buff, sizeof buff, stdin );
(gdb) n
1234567890
8 printf( "%s\n", buff );
(gdb) x/11c buff
0x7fffffffda3d: 49 '1' 50 '2' 51 '3' 52 '4' 53 '5' 54 '6' 55 '7' 56 '8'
0x7fffffffda45: 57 '9' 48 '0' 0 '\000'
(gdb)