我正在使用C语言编写密码项目。我必须编写9个具有多个加密/解密目的的函数,以及一个main()程序来测试它们。无论如何,9个功能已经完成,它们确实有小错误,但它不是我在这里的。 我想为main()程序测试我可以写一个'do-while'循环,其中变量'test'从0到9接受用户的输入。从1到9,每个值将激活一个不同的函数,并且0结束循环。这是我的循环(我只引入了第一个函数,因为如果它不能与第一个函数一起使用,它将不会与其他函数一起使用):
{
do
{
if (test==1)
{
int n;
char c;
printf("Donnez le caractere:\n");
scanf("%c", &c);
printf("Votre caractere est: %c\n", nieme_lettre_suivante_ameliore(c,n));
}
printf("Rentrez a nouveau la fonction que vous voulez tester:\n");
scanf("%d",&test);
}
while (test!=0);
}
对不起它是法语,只是为了上下文,第一个函数会询问用户一个字符'c'和一个数字'n',然后如果输入字符是一个字母,它将移动'n'字母的字母在字母表中(如在凯撒密码中),如果它不是一个字母,它将停止并打印“这不是一个字母”。当我尝试执行它时,即使在用户给出了他的角色或号码之前,函数内的所有printf也会被打印,并且这些printf中的一些不应该根据用户写的内容激活。我在循环外检查了它并且它工作正常,它只在循环内部执行此操作。
如何阻止这种情况发生,或者在决定打印什么之前让它等待用户输入? 谢谢。 如果翻译文本有助于我帮助我,请告诉我,因此我可以用法语发布部分的翻译版本。