Итак, я пытаюсь получить входные данные в D, и когда я проверяю, что вход правильный, я либо заканчиваю бесконечным циклом, либо входным буфером перетекание. Бесконечный цикл или переполняющий буфер в D при запросе ввода
import std.stdio;
import std.string;
void main(){
char[] data;
writeln("Hey Player ",1,". Would you like to make a guess?\n Type 'y' to guess or 'n' to continue ");
write("> ");
readf(" %s", &data);
char guessY = data[0];
while(guessY != 'y' && guessY != 'Y' && guessY != 'n' && guessY != 'N')
{
writeln(guessY, " ",data);
writeln("");
writeln("Hey Player ",1," enter the correct input please.\n Type 'y' to guess or 'n' to continue ");
write("> ");
readf(" %s", &data);
guessY = data[0];
//fflush(&guessY);
}
writeln(guessY, " ",data);
}
И в настоящее время, если я пытаюсь читать ввод как массив символов, я должен остановить ПОЛУЧАТЬ ввод с помощью Ctrl + D, а затем она бесконечно петли, если я пытаюсь и получать только один символ, если набирается более одного символа, при следующем запросе ввода он будет автоматически использоваться. Я выбрал эту небольшую часть кода из большей функции, потому что именно здесь я выделил проблему.
Вопрос с использованием '% c', что я столкнулся, это позже я прошу 3 символов ввода отдельно спина к спине, и если вы поставите '% c', а кто-то вводит' abc' следующие два входа будут автоматически использоваться b и c Но '\ n' работал, спасибо вам большое! –