在C语言中,有多个函数可以从键盘获得用户输入:
1.scanf("格式说明",变量地址列表)
scanf("%s",字符数组名或指针);
scanf("%c",字符变量地址);
scanf("%d",十进制整数变量地址);
scanf("%u",无符号十进制整数变量地址);
scanf("%o",八进制整数变量地址);
scanf("%x",十六进制整数变量地址);
scanf("%i",十进制、八进制、十六进制整数变量地址);
scanf("%e",浮点数变量地址);
scanf("%f",浮点数变量地址);
scanf("%[]",符合指定字符集合的字符指针);
scanf()可以接收多种格式的数据,遇到回车,tab,空格时,输入结束,会自动在字符串后面添加' ',但是回车,空格和tab键仍会留在输入的缓冲区中。当连续两次调用scanf时,会直接读入上一次结束scanf时的回车符号“ ” (0x0a); 没有将回车键屏蔽。
eg:
当输入字符串中带有空格时:
test space //输入带有空格的字符串 first input:test second input:space
2.gets(字符指针):可接受回车键之前输入的所有字符,并用' '替代 ' '.回车键不会留在输入缓冲区中。
3.getchar():getchar的返回值是缓冲区的第一个字符的ASCII码,如出错返回-1。getchar从用户键入回车开始读缓冲区,用户在键入回车之前输入了不止一个字符,所有字符会保留在键盘缓存区中,getchar直到缓冲区中的字符读完为后,才等待用户按键。
4.getch():getch直接从键盘获取字符,不等待用户按回车。只要用户按键,getch就立刻返回,getch返回值是键盘输入的ASCII码,出错返回-1。
一般使用getchar读取scanf语句执行后,缓冲区留下的换行符。