在 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);
我有这个 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
的输入。
尝试在循环
getchar()
当 scanf()
是一个字符变量时,永远记得在 %c
之前放一个 space。有点不寻常,但这就是在获得真实字符之前跳过输入流中所有缓冲的 space 的方法。
scanf("%c",&rep);
应该是 scanf(" %c",&rep);