>>Wait a second. fgets() is for reading from files
Narue is correct -- why do you believe that? The keyboard is treated just as any file system, just use stdin as the file handle.
>>e.g. If you've continuous gets() functions or a gets() function after a scanf() function then compilers skip that gets() function
That problem is not compiler related. The compiler skips nothing, it doesn't toss out code for no good reason.
In the problem you described, the solution is to clear the input buffer after scanf() call, such as removing the '\n' (Enter key) from the keyboard buffer. In any event gets() should never ever under no circumstances in any lifetime be used. Use either fgets() or gets_s() (if your compiler supports that).