我想在ANSI C中创建一个提示用户输入的代码。 首先,我想打印提示。 然后,我想回显提示和循环,仅在键入和回显字符时才会显示。
我知道要创建一个无限循环,我必须将while()的条件设置为始终为true的内容,例如while(1)
然而,当我测试我的代码时,我似乎一遍又一遍地循环打印“输入一个字符”。有关C新手的任何提示吗?
#include <stdio.h>
int main()
{
char mychar;
while(1)
printf("Enter a characater:\n");
scanf("%c", &mychar);
printf("%c", &mychar)
}
答案 0 :(得分:8)
C中的块不是基于缩进(例如在python中)。阻止必须以{
开头,以}
结尾,如下所示:
while(1)
{
printf("Enter a characater:\n");
scanf("%c", &mychar);
printf("%c", mychar);// NOTE the missing `&` in front of `mychar` here
}
答案 1 :(得分:0)
您应该使用可以自动格式化/自动注册整个源文件的编辑器或IDE。如果你有这样的事情,你会立即看到问题,因为你的代码看起来像这样:
int main()
{
char mychar;
while(1)
printf("Enter a characater:\n");
scanf("%c", &mychar);
printf("%c", &mychar)
}
即使是经验丰富的C程序员有时也会犯这样的错误,所以即使将来也可以使用简单的治疗方法(autoindent / autoformat代码)。
无关的问题,您将指针传递给后者%c
中printf
格式说明符的char。您应该在编译器上启用警告,它会警告您。