我想写一个输入验证,用户可以输入带有空格的名称,如果它是null
或超过最大数组长度,它将jmp
到开头。但是,当输入太长时,\n
将在第二个回合中保留,这意味着scanf_s
将在第二回合自动接收值。所以我想在内联汇编语言中有一个类似Java fflush
的方法来清除键盘输入吗?这是我的代码:
char inputName[] = "%20[^\n]";
char name[20];
int validNum;
_asm{
startInput:
lea eax, name
push eax
call scanf_s //this is the problem part
add esp, 8
computeLength:
lea ebx, name
...
inc validNum
cmp [ebx], '\0'
je validate
validate:
cmp validNum, 20
jg startInput
}