x86内联汇编语言如何刷新键盘输入缓存

时间:2017-11-25 01:18:16

标签: visual-c++ x86 inline-assembly

我想写一个输入验证,用户可以输入带有空格的名称,如果它是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
   }

0 个答案:

没有答案