一、了解编译器是怎样输入输出的
输入:用户从终端或编译器上输入内容,内容输入到缓存区中去,从缓存区中读取,并将其存储到内存中
输出:刚好和输入是反过程
二、输入缓冲区
输出并不是一步完成的,首先将内容输入到缓冲区中,然后从缓冲区中读取内容
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int m=4;
char c;
int n = 2;
printf("%d", (n != 0) ? 1 : 0);
printf("%c%c\n", 245, 235);
while (1)
{
printf("请输入一个整数:");
scanf("%d", &m);
printf("%d是一个%s数和%s数----%d\n", m,
(0 == m % 2 ) ? "偶" : "奇",
(m >= 0) ? "正":"负",
(m !=n)?1:0);
//scanf("%*c"); //读取一个任意字符 换行也是一个字符,
//若不读取,会影响下面的结果
printf("请输入一个字符:");
scanf("%c", &c);
if (c >= 'a' && c <= 'z') {
printf("这是小写字母~~\n\n");
}
else if (c >= 'A' && c <= 'Z') {
printf("这是大写字母~~\n\n");
}
else
printf("这是一个数字~~\n");
int n = 0;
int sum = 1;
printf("请输入一个数:");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
sum *= i;
}
printf("1到%d的阶乘为: %d\n\n",n , sum);
}
return 0;
}
若是不加 scanf("%*c");
结果为:---直接跳过 “请输入一个字符” 的输入
原因:输入3回车后,输入缓冲区中此时有3和回车符号,前面只读取了一个数字3,回车符号并没有读取。请输入一个字符时,此时自动读取了回车符号。所以此时为了能够正常输入一个字符,需要把前一个输入时的回车读取。-----这里注销那行代码注释就可以正常输入了
三、如何读取缓冲区内的字符
读取缓冲区内的字符有以下几种方法:
scanf("%c",&c);
getchar();
scanf("%*c");
scanf("%*c[^'\0']%*c");