我希望用户被问到他们想写的“圈数”,直到用户决定用( Ctrl + d )EOF结束它? / p>
额外的问题:如果我写一封信,例如“k”,它会垃圾邮件圈出来。我该如何改变?
#include <stdio.h>
int main ()
{
int i;
int x;
printf("\nHow many circles do you want to write?\n");
scanf("%d", &x);
while(x != EOF)
{
for (i = 1; i <= x; i = i + 1)
{
putchar('o');
}
printf("\nHow many circles do you want to write?"
"(to end program click ctrl+d at the same time!))\n");
scanf("%d", &x);
}
printf("\n\n Bye! \n\n");
return 0;
}
答案 0 :(得分:2)
您的计划遇到的最大问题是scanf
不会将EOF
读入变量。但是,解决这个问题不会使您的程序完全正确,因为您的代码中还有其他问题:
以下是解决所有这些缺点的方法:
int x;
for (;;) {
printf("\nHow many circles do you want to write? (to end the program click Ctrl+D at the same time!)\n");
int res = scanf("%d", &x);
if (res == EOF) break;
if (res == 1) {
... // Draw x circles here
} else {
printf("Invalid input is ignored.\n");
scanf("%*[^\n]");
}
}
printf("\n\n Bye! \n\n");
return 0;
答案 1 :(得分:0)
根据man page,scanf()
将return
EOF,而不是scan
EOF到x
作为值。
返回值
这些函数返回成功匹配和分配的输入项的数量,可以少于提供的数量,或者在早期匹配失败的情况下甚至为零。
如果在第一次成功转换或匹配失败发生之前达到输入结束,则返回值
EOF
......
此外,
如果我写一封信,例如&#34; k&#34;它将垃圾邮件圈出来,我该如何更改?
如果输入一个char
值,则会导致匹配失败,在您的情况下,scanf()
会返回0
,而不是1
。
所以,总而言之,您已收集scanf()
的返回值,并检查该值是否符合所需条件。您可以将代码更改为
int retval = 0;
while ((retval = scanf("%d", &x))!= EOF && (retval == 1))
答案 2 :(得分:0)
如果你被允许#include,有两个方便的函数bool kbhit()和char getch()。 所以你可以写
syn mis non syn mis non syn mis non syn mis non
A A A C C C T T T G G G
A 0.24 0.38 0.38 0.36 0.14 0.50 0.19 0.31 0.50 0.50 0.17 0.33
C 0.22 0.44 0.33 0.31 0.12 0.56 0.25 0.58 0.17 0.08 0.17 0.75
G 0.28 0.36 0.36 0.80 0.10 0.10 0.38 0.08 0.54 0.27 0.64 0.09
T 0.24 0.41 0.35 0.60 0.33 0.07 0.43 0.43 0.14 0.55 0.27 0.18
提示:看一下输入字母而不是数字时返回的scanf(%d,&amp; x)。
答案 3 :(得分:0)
您可以通过char输入读取char:
<form>
<input type="checkbox" name="whatever" value="1" required="required" class="required_group" />
<input type="checkbox" name="whatever" value="2" required="required" class="required_group" />
<input type="checkbox" name="whatever" value="3" required="required" class="required_group" />
<input type="checkbox" name="whatever" value="4" required="required" class="required_group" />
<input type="submit" name="submit" />
</form>