在while循环中转义scanf

时间:2015-12-02 00:00:19

标签: c scanf

我有这张代码:

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”函数。

我没有找到解释。

我需要一些帮助。

非常感谢:)

2 个答案:

答案 0 :(得分:3)

永远记住在%c字符变量scanf()之前放置一个空格。有点不寻常,但是如何在获得真实角色之前跳过输入流中的所有缓冲空间。

scanf("%c",&rep);应为scanf(" %c",&rep);

答案 1 :(得分:1)

可能是从您的第一个<body> <div>I would like this to appear in the middle of the viewport.</div> </body>开始读取您的输入 尝试在扫描前将scanf放在循环