C语言中,使用scanf()函数获得输入信息。
以键盘输入十进制数为例,通常其输入格式为:
int a;
scanf("%d",&a);
注意用&符号,指明变量。
下文详述printf()函数。
在printf()函数中,通常分为2部分,第一部分为格式format,第二部分为数据。在格式中,要使用占位符%表示数据,这个数据应当在第二部分给出。下面是常用各种类型及占位符表示。
类型 | 占位符 |
---|---|
地址 | %p |
int | %d |
unsigned int | %u |
long | %l |
unsigned long | %lu |
short | %h |
float | %f |
double | %lf |
指数记法的浮点数 | %e |
char | %c |
bool | %d |
字符串 | %s |
八进制 | %o |
十六进制 | %x |
带前缀八进制 | %#o |
带前缀十六进制 | %#x |
注:
- m.nf 输出数据共占m列,其中有n位小数。如果数值长度小于m,左补空格;%-m.nf 同上,右补空格。
- scanf()函数,对于数组与变量的输入格式有所不同,但本质上都指向地址:
char name[40];
scanf("%s",name); //此处直接用name
char ch;
scanf("%c",&ch); //此处需要用到取地址符&
上述代码中,利用字符数组name保存字符串时,不需要在末尾补上'\0',编译器会自动补上。
上述代码中,如果在命令行输入name名字为Harry Bubble,则只读取Harry。因为scanf()开始读取输入以后,会在第一个空格(blank)、制表符(tab)或者换行符(newline)处停止读取,因此scanf()只会把句子中的第一个单词读入。可用gets()函数处理一般字符串。getchar()则能够读取每个字符。
- 打印字符’%'时,需要使用两个%。