1、输入
(1)字符型数据输入函数
主要是getchar与getch,getchar与getch函数声明如下:
//库函数声明
int getchar(void) //标准c语言库函数
int getch(void) //非标准C语言库函数
- 通过getchar与getch的函数声明,这两个函数调用时不需要提供参数。(因为函数参数返回值类型部分填写的是void,则表明这是一个无参函数);
- 两个函数返回值都是int型数据(整型)
- 两个函数的区别在于:首先,调用getchar()函数进行字符输入时,屏幕上有回显显示,而getch()没有回显。getchar经常用于需要用户核对自己所输入的字符是否正确的场合。而getch可用于验证密码,或不希望回显字符破坏界面效果的场合;其次,getchar函数在完成输入时,需要按下回车键予以确认,getch则不需要。
- getch除用于输入字符外,还常用于程序调试,当需要程序暂停运行时,可以通过一个不赋值的getch()函数调用语句getch();以等待用户输入的名义使程序暂停运行,当用户按下任意键后程序继续运行。比如在VC6.0集成编译环境中运行程序时,当程序执行完成后,VC会使程序停在一个完成界面,并提示“Press any key to continue”,但是当用户直接打开vc生成的EXE可执行文件时,程序运行完成后,控制台界面将立即关闭,这时用户时无法仔细查看程序的最后输出数据,要解决这个问题,也可以使用不赋值的getch添加在程序的最后。
- getchar()是一个标准C库函数,其函数声明包含在头文件“stdio.h”中;而getch()并非一个标准C库函数,其函数声明包含在头文件“conio.h”中。
举例说明:
#include <stdio.h>
#include <conio.h>
void main()
{
char ch1,ch2;
printf("Please enter the ch1:\n");
ch1=getchar();
printf("Please enter the ch2:\n");
ch2=getch();
printf("ch1=%d\tch2=%d\n",ch1,ch2);
}
(2)格式化输入函数
scanf函数的调用格式如下:
//函数调用格式
scanf("格式控制字符串",地址列表)
格式控制字符串:%<*><m><l/L><h/H>格式字符(<>表示该项可选)。格式控制字符串根据需要输入的数据个数,可以由一个或多个格式字符组成,每个格式字符必须以%开头,scanf()可以使用的格式字符如表1所示。
格式字符 | 用途 |
d | 读入一个十进制整数 |
c | 读入一个字符 |
f/F | 读入一个小数形式的浮点数 |
s | 读入一个字符串(对比c) |
i | 读入一个八、十或十六进制的整数,输入0开头的整数则为8进制,0x或0X开头的整数为十六进制 |
x/X | 读入一个十六进制整数 |
o | 读入一个八进制整数 |
u | 读入一个无符号(unsigned)的十进制整数 |
e/E | 读入一个指数形式的浮点数 |
g/G | 读入一个小数或指数形式的浮点数 |
% | 抵消掉读入的一个百分号 |
n | 前面已经输入的所有数据位数 |
[] | 只能读入集合中规定的字符 |
p | 读入一个指针 |
*:表明跳过所输入的数据,即与*对应的数据直接被丢弃,而不保存到内存中;可见c语言题目1。
m:用整数表示的域宽,即指定在用户输入的数据中,前m位被输入到计算机中。多余的数据用于后续的输入或丢弃。如果输入的数据位数小于m,则将实际数据输入到计算机中。
l/L:指定输入一个长数据,当l/L后跟随的是d、x/X、o、u时,表明要求用户输入一个一个长整型(long)数据;当l/L后跟随的是f/F、e/E、g/G格式字符时,表明要求用户输入一个双精度型(double)数据。这里存在一个初学者容易犯错的地方,即scanf()的格式字符中f/F、e/E、g/G均表示输入一个单精度型(float)数据,要输入双精度(double)数据时,必须加l/L修饰符才可以。
h/H:h/H修饰符与l/L刚好相反,它表明要求用户输入一个短整数据,并且h/H只能用于修饰d、x/X、o、u,不能用于f/F、e/E、g/G