我打算编写一个程序,以便打印星数。实施例
输入数字:12 11 9 8 ^ d
12 | ************
11 | ***********
9 | *********
8 | ********
#include <stdio.h>
int main(int argc, char *argv[]) {
int a;
printf("enter values \n");
while (scanf("%d ", &a) != EOF) {
printf("%d |", a);
for (int j = 1; j<= a; j++) {
printf("*");
}
printf("\n");
}
}
使用我的代码打印出正确的输出,但它没有打印出我输入的最后一个值的星数。就像在上面的例子中一样,它不会打印出8颗星,直到我再次点击输入或按^ D。我想知道我的代码是否有些错误。 ?
答案 0 :(得分:0)
您的代码没有任何问题。
stdin
是行缓冲的,因此在按或(= ctrl-d在Linux中)之前无法读取输入。
有conio.h
等库提供非缓冲输入。
答案 1 :(得分:0)
删除%d
内scanf("%d ", &a))
之后的尾随空格。
#include <stdio.h>
int main(int argc, char *argv[]) {
int a;
printf("enter values \n");
while (scanf("%d", &a) != EOF) {
printf("%d |", a);
for (int j = 1; j<= a; j++) {
printf("*");
}
printf("\n");
}
return 0;
}