我有这张代码:
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”函数。
我没有找到解释。
我需要一些帮助。
非常感谢:)
答案 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
放在循环