Ich versuche einen Emulator für etwas zu erstellen, und in der Hauptschleife für den Prozessor wollte ich einen einfachen Weg implementieren, die CPU eine Schleife nach der anderen (Drücken Sie dazu die Eingabetaste, um die einzelnen Schritte anzuzeigen. So kann ich sehen, welche Anweisungen in den einzelnen Schritten ausgeführt werden. Darüber hinaus können Sie eine Zahl anstelle von nur Eingabe eingeben, um den Standardschrittbetrag von 1 auf etwas anderes zu ändern (so wird x Anzahl der Zyklen übersprungen und anschließend wieder zu 1 zurückgestellt.C++ - fgets() ignoriert nachfolgende Eingaben, wenn Enter gedrückt wird
Das Problem ist, dass es gut funktioniert, wenn ich eine Zahl eintrage (überspringe diese Anzahl von Zyklen und dann wiederhole mich jeden Zyklus), aber wenn ich nur die Enter-Taste drücke, anstatt eine Nummer einzugeben, möchte ich, dass sie standardmäßig auf 1 steht es nur durch das ganze Programm laufen lassen, ohne mich jemals aufgefordert wieder. Wie kann ich == 1?
void CPU_loop()
{
...
static int step = 1;
char cmd[10];
if(step == 1)
{
if(fgets(cmd, 10, stdin) != NULL) // If you entered something other than Enter; doesn't work
{
step = std::atoi(cmd); // Set step amount to whatever you entered
}
}
else
{
--step;
}
...
}
einfach manuell die Eingabe von stdin selbst lesen 'getchar' verwenden. Legen Sie den Text einfach in einen Puffer, bis Sie das Zeilenumbruchzeichen erhalten. Dann können Sie den Text wie gewünscht bearbeiten. – bace1000
Was ist der Wert von 'cmd', wenn Sie die Eingabetaste drücken? Was ist dann der Wert von "Schritt"? –