请求输入时D中的无限循环或溢出缓冲区
因此,我一直在尝试在D中获取输入,当我检查以确保输入正确时,我要么以无限循环结束,要么输入缓冲区溢出。 当前,如果我尝试以字符数组的形式读取输入,我必须停止使用ctrl+d接收输入,然后它会无限循环,如果我尝试只接收一个字符,如果键入了多个字符,下次请求输入时,它将自动使用。我从一个较大的函数中取出了这少量代码,因为这是我将问题隔离到的地方。Change请求输入时D中的无限循环或溢出缓冲区,d,D,因此,我一直在尝试在D中获取输入,当我检查以确保输入正确时,我要么以无限循环结束,要么输入缓冲区溢出。 当前,如果我尝试以字符数组的形式读取输入,我必须停止使用ctrl+d接收输入,然后它会无限循环,如果我尝试只接收一个字符,如果键入了多个字符,下次请求输入时,它将自动使用。我从一个较大的函数中取出了这少量代码,因为这是我将问题隔离到的地方。Changescanf(“%s”和&data)到scanf(“%s\n”、&data) 或者,您可以使用以下命令读取单个字符:scanf(“%c”,&gu
scanf(“%s”和&data)代码>到scanf(“%s\n”、&data)代码>
或者,您可以使用以下命令读取单个字符:scanf(“%c”,&gustiy)
我遇到的使用%c
的问题是,后来我要求分别背靠背输入3个字符,如果您输入%c
,有人输入abc
,接下来的两个输入将自动使用b和c,但是\n
有效,非常感谢!
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);
}