1 standard C I/O 2 头文件:#include <stdio.h> 3 4 1. getchar() 5 6 原型:int getchar(void); 7 功能:从标准输入获取并返回下一个字符,并释放该字符空间。 8 返回值:读取的字符的ASCII,出错或到达文件结尾时返回EOF(-1)。 9 10 键盘 缓冲区 getchar读取字符 11 入水口 蓄水池 出水口 12 13 a. 我们从键盘输入的字符串首先是放在缓冲区内的,再利用getchar()函数从缓冲区内读取字符。 14 b. 当用户键入回车符之后,getchar()才开始从缓冲区中读取字符(一次调用读取一个字符)。 15 c. 键入Enter建实际上产生了2个字符(回车符' '和换行符' ')。回车符' '使光标回到行首,换行符' '换行。 16 17 18 // 读取含有space(空格),table(制表符)的字符串 19 20 #include <stdio.h> 21 22 int main() 23 { 24 int t; 25 while (' ' != (c = getchar())) printf("%c", t); 26 return 0; 27 } 28 29 /* 30 * input: 123table456space789 31 * output: 123 456 789 32 */ 33 34 // 当使用scanf()和gets()连用时,要使用getchar()清除scanf()输入完成最后键入的Enter键 35 36 #include <stdio.h> 37 38 int main() 39 { 40 int nCase; 41 scanf("%d", &nCase); 42 getchar(); // 清空缓冲区 43 while (nCase--) 44 { 45 char str[10]; 46 gets(str); 47 printf("%s ", str); 48 } 49 return 0; 50 } 51 /* 52 * input: 53 * 2 54 * 123 456 55 * abc def 56 * output: 57 * 123 456 58 * abc def 59 */ 60 61 62 2. gets() 63 64 原型:char* gets(char* str); 65 功能:从标准输入读取字符并把他们加载到str里,直到遇到换行或者到达EOF 66 返回值:返回读入的字符串,发生错误时返回NULL 67 68 gets()和scanf()都可以输入字符串,两者的异同: 69 a. 不同点: 70 scanf()不能接受空格、制表符、回车 71 gets()可以接受空格、制表符,遇到回车结束输入 72 b. 相同点: 73 字符串接受结束后自动加'