【问题标题】:Escape scanf within a while loop在 while 循环内转义 scanf
【发布时间】:2015-12-02 00:00:18
【问题描述】:

我有这张代码:

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

我没有找到对此的解释。

我需要一些帮助。

非常感谢:)

【问题讨论】:

标签: c scanf


【解决方案1】:

scanf() 是字符变量时,请始终记住在%c 之前放置一个空格。有点不寻常,但这是在获得真正字符之前跳过输入流中所有缓冲空间的方法。

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

【讨论】:

    【解决方案2】:

    它可能正在从您的第一个 scanf 读取您的输入。
    尝试在循环中的 scanf 之前添加getchar()

    【讨论】:

      猜你喜欢
      • 2013-02-17
      • 2013-05-03
      • 1970-01-01
      • 2020-02-16
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多