В основном, как говорится в заголовке. Когда моя программа запускается с консоли, она спросит, хотите ли вы зашифровать или дешифровать. И когда я вводил e или E, это создает новую пустую строку (пока я не введу какой-то текст), а затем сразу откроет строки «введите текст» и «введите ключевые строки».Программа пропускает fgets без ввода ввода
Итак, в консоли это выглядело бы примерно так:
Вы хотите (E) ncrypt или (D) ecrypt? e
asdf jkl; < ---- случайного ввода пользователя, чтобы получить программу, чтобы продолжить ..
Введите текст, который вы хотели бы, чтобы зашифровать: Введите ключ для шифрования: (вход пользователя)
, а затем завершает работу программы ..
//message to be encrypted
char text[250];
//word to use as the key
char key[50];
//stores the encrypted word
char encrypted[250];
char answer;
printf("Would you like to (E)ncrypt or (D)ecrypt? ");
scanf(" %c", &answer);
if(answer == 'e' || answer == 'E')
{
printf("Enter the text you want to encrypt : ");
fgets(text, 250, stdin);
printf("Enter a key to use for encryption : ");
fgets(key, 50, stdin);
printf("Encrypted text : ");
//code that encrypts the text here
}
Таким образом, проблема, то, что это пропуск fgets полностью и не дожидаясь/позволяя пользователю вводить любые ответы .. почему для?
'scanf ("% c ", & answer);' оставляет в строке ввода 'newline'' входной буфер, который берется 'fgets': избавиться от него. –
@Weather Vane, который имеет большой смысл (извините, первая неделя обучения c). Как вы собираетесь избавиться от новой строки, оставшейся во входном буфере? – swimmingpoole