使用 getchar() 时条件未正确执行
Condition not executed properly when using getchar()
当我在此代码中使用 getchar 时,输出没有 运行 正确且连续!
#include <stdio.h>
#include <conio.h>
int main()
{
int i, sum=0, num;
float ave;
const int n = 5;
clrscr();
for(i = 0 ; i < n; i++) {
printf ("Enter number %d: ", i+1);
num = getchar();
sum += num;
}
ave = (float) sum / n;
printf("\nThe average is: %6.2f", ave);
getch();
return 0;
}
Output:
Enter number 1: 1
Enter number 2: Enter number 3: 2
Enter number 4: Enter number 5: 3
The average is: 34.00
getchar
是一个缓冲函数,它将换行符保存在缓冲区中。正确的代码是:
#include <stdio.h>
int main()
{
int i, sum=0, num;
float ave;
const int n = 5;
for(i = 0 ; i < n; i++) {
printf ("Enter number %d: ", i+1);
num = getchar();
getchar(); // Eat the buffered input
sum += num;
}
ave = (float) sum / n;
printf("\nThe average is: %6.2f", ave);
getchar();
return 0;
}
(我没有Windows和conio.h
),但应该是一样的。对 getchar
的额外调用用于 'eating' 缓冲的换行符。
当我在此代码中使用 getchar 时,输出没有 运行 正确且连续!
#include <stdio.h>
#include <conio.h>
int main()
{
int i, sum=0, num;
float ave;
const int n = 5;
clrscr();
for(i = 0 ; i < n; i++) {
printf ("Enter number %d: ", i+1);
num = getchar();
sum += num;
}
ave = (float) sum / n;
printf("\nThe average is: %6.2f", ave);
getch();
return 0;
}
Output: Enter number 1: 1 Enter number 2: Enter number 3: 2 Enter number 4: Enter number 5: 3 The average is: 34.00
getchar
是一个缓冲函数,它将换行符保存在缓冲区中。正确的代码是:
#include <stdio.h>
int main()
{
int i, sum=0, num;
float ave;
const int n = 5;
for(i = 0 ; i < n; i++) {
printf ("Enter number %d: ", i+1);
num = getchar();
getchar(); // Eat the buffered input
sum += num;
}
ave = (float) sum / n;
printf("\nThe average is: %6.2f", ave);
getchar();
return 0;
}
(我没有Windows和conio.h
),但应该是一样的。对 getchar
的额外调用用于 'eating' 缓冲的换行符。