C中的不完整打印
Incomplete printing in C
#include<stdio.h>
#define max 3
struct t
{
char ch;
char cH;
int i;
};
int main()
{
struct t test[max];
int count=0,in=0;
while(count < max)
{
printf("Enter small char\n");
scanf("%c",&test[count].ch);
getchar();
printf("Enter big char\n");
scanf("%c",&test[count].cH);
getchar();
printf("Enter number\n");
scanf("%i",&test[count].i);
count++;
}
for(in=0;in<count;in++)
{
printf("%c %c %i\n",test[in].ch,test[in].cH,test[in].i);
//printf("line%10i\n",in);
}
return 0;
}
对于以下输入:
a A 1
b B 2
c C 3
输出:
a A 1
2
3
为什么不打印第 2 行和第 3.Is 行由于 getchar() 函数导致的错误?
还有没有更好的flush input?
当您读取一个整数时,scanf 会将“\n”保存在缓冲区中(当您按下回车键时),它会被您的下一个 scanf 捕获。所以,只需要在读取整数后添加一个新的getchar()即可。
printf("Enter number\n");
scanf("%i",&test[count].i);
count++;
getchar();
您也可以通过在格式规范中的 %c
之前添加 space 来解决此问题。然后,就不需要调用 getchar()
.
while(count < max)
{
printf("Enter small char\n");
scanf(" %c",&test[count].ch);
printf("Enter big char\n");
scanf(" %c",&test[count].cH);
printf("Enter number\n");
scanf(" %i",&test[count].i);
count++;
}
#include<stdio.h>
#define max 3
struct t
{
char ch;
char cH;
int i;
};
int main()
{
struct t test[max];
int count=0,in=0;
while(count < max)
{
printf("Enter small char\n");
scanf("%c",&test[count].ch);
getchar();
printf("Enter big char\n");
scanf("%c",&test[count].cH);
getchar();
printf("Enter number\n");
scanf("%i",&test[count].i);
count++;
}
for(in=0;in<count;in++)
{
printf("%c %c %i\n",test[in].ch,test[in].cH,test[in].i);
//printf("line%10i\n",in);
}
return 0;
}
对于以下输入:
a A 1
b B 2
c C 3
输出:
a A 1
2
3
为什么不打印第 2 行和第 3.Is 行由于 getchar() 函数导致的错误? 还有没有更好的flush input?
当您读取一个整数时,scanf 会将“\n”保存在缓冲区中(当您按下回车键时),它会被您的下一个 scanf 捕获。所以,只需要在读取整数后添加一个新的getchar()即可。
printf("Enter number\n");
scanf("%i",&test[count].i);
count++;
getchar();
您也可以通过在格式规范中的 %c
之前添加 space 来解决此问题。然后,就不需要调用 getchar()
.
while(count < max)
{
printf("Enter small char\n");
scanf(" %c",&test[count].ch);
printf("Enter big char\n");
scanf(" %c",&test[count].cH);
printf("Enter number\n");
scanf(" %i",&test[count].i);
count++;
}