scanf没有等待输入

Moc*_*ird 3 c

我试图在这里找到这个bug,但仍然没有得到它.我一直在调试和谷歌搜索并发现一些接近的主题,但只有解决方案,我不需要ATM,我很好奇为什么这个代码不起作用:

#include <stdlib.h>
#include <string.h>
#include <stdio.h>

#define BUFFER 256

int main()
{   
    int missionCode;
    char *desc = (char*)malloc(sizeof(char)*BUFFER);

    do {
        printf("Please enter the mission code (or -1 for exit): ");
        scanf("%d", &missionCode);
        fflush(NULL);
        if (missionCode==-1)
            return 1;
    } while (missionCode>10);

    do {
        printf("Please enter a string:\n");
        scanf("%[^\n]s", desc); //it doesn't stop here!
        fflush(NULL);
        if (!strcmp("exit",desc))
            return 1;
    } while (strlen(desc)<20);

    printf("your string:\n%s", desc);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

第二个循环中的scanf\flushall有问题,但我找不到什么.顺便说一句,这是C语言.

Dan*_*her 6

scanf("%d", &missionCode);
Run Code Online (Sandbox Code Playgroud)

将换行符留在缓冲区中,所以

scanf("%[^\n]s", desc);
Run Code Online (Sandbox Code Playgroud)

立即找到一个并停止.您可以添加空格

scanf(" %[^\n]s", desc);
Run Code Online (Sandbox Code Playgroud)

以跳过初始空格的格式.