比较输入方法:
scanf - getchar - gets
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
/*
比较输入方法:
scanf - getchar - gets
*/
void test() {
/*getchar()*/
char ch1, ch2;
ch1 = getchar();
ch2 = getchar();
printf("%d %d\n", ch1, ch2);
/*
输入a enter
输出97 10
原因:enter留在缓冲区,被第二个getchar()读到
****
getchar()以Enter结束输入,也不会舍弃最后的回车符;
*/
printf("==================\n");
char str1[100], str2[100];
scanf("%s", str1);
printf("%s\n", str1);
scanf("%s", str2);
printf("%s\n", str2);
/*
输入:
hello world
输出:
hello
world
原因:
scanf()函数取数据是遇到回车、空格、TAB就会停止,也就是第一个scanf()会取出"Hello",
而"world!"还在缓冲区中,这样第二个scanf会直接取出这些数据,而不会等待从终端输入
****
scanf()以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中);
*/
printf("==================\n");
char buffer[20], str3[20], str4[20];
/*buffer用来吸收上一轮缓冲区中的\n*/
gets_s(buffer);
gets_s(str3);
printf("%s\n", str3);
gets_s(str4);
printf("%s\n", str4);
/*
输入:
hello world
12345
输出:
hello world
12345
原因:
gets()以Enter结束输入(空格不结束),接受空格,会舍弃最后的回车符!
*/
}
int main() {
/*
a
97 10
==================
hello world
hello
world
==================
hello world
hello world
12345
12345
*/
test();
return 0;
}