在 while 循环中转义 scanf

Escape scanf within a while loop

我有这个 sheet 代码:

listCh remplir(){
    char rep;
    listCh l,aux,p;
    printf("1-veuillez entrer un element?(n pour quitter)\n");
    scanf("%c",&rep);
    if(rep=='n')
        l=NULL;
    else{
        l=malloc(sizeof(listCh));
        printf("2-Donnez la valeur d element!\n");
        scanf("%d",&l->valeur);
        p=l;
    }
    while(rep!='n'){
        printf("voulez-vous ajouter un nouveau element de la list? (n pour quitter)\n");
        scanf("%c",&rep);
        if(rep!='n'){
            aux=malloc(sizeof(listCh));
            printf("Donnez la valeur d element!\n");
            scanf("%d",aux->valeur);
            p->suiv=aux;
            p=aux;
        }
        else{
            p->suiv=NULL;
        }

    }
    return l;
}

执行时没有错误! 但是,问题是我的程序转义了 "while" 循环中的第一个 "scanf" 函数。

我没有找到解释。

我需要一些帮助。

非常感谢:)

它可能正在读取您第一个 scanf 的输入。
尝试在循环

的 scanf 之前放置一个 getchar()

scanf() 是一个字符变量时,永远记得在 %c 之前放一个 space。有点不寻常,但这就是在获得真实字符之前跳过输入流中所有缓冲的 space 的方法。

scanf("%c",&rep); 应该是 scanf(" %c",&rep);