Basically as the title says.. When my program is run from the console, it\'ll ask if you\'d like to encrypt or decrypt.. and when I input e or E, it creates a new blank line (un
The line scanf(" %c", &answer);
is leaving a newline
in the input buffer which is taken by fgets
. The leading space in " %c"
consumes leading whitespace but not trailing whitespace.
You can get rid of the newline
with the "%*c"
format specifier in scanf
which reads the newline
but discards it. No var argument needs to be supplied.
#include <stdio.h>
int main(void)
{
char answer;
char text[50] = {0};
scanf(" %c%*c", &answer);
fgets(text, sizeof text, stdin);
printf ("%c %s\n", answer, text);
return 0;
}
From http://www.cplusplus.com/reference/cstdio/fgets/
"Reads characters from 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."
Presumably you press Enter after typing E or D. Your scanf() doesn't consume the newline so it remains in the input stream. fgets() sees the newline and returns.