📄 31.htm
字号:
printf("a=%2d\n", a); /*a超过2位,
按实际值输出a=1234*/ <br>
printf("*i=%4d\n", *i); /*输出4位十进制整数*i=
12*/ <br>
printf("*i=%-4d\n", *i); /*输出左对齐4位十进制整数*i=12*/
<br>
printf("i=%p\n", i); /*输出地址i=06E4*/
<br>
printf("f=%f\n", f); /*输出浮点数f=3.141593*/
<br>
printf("f=6.4f\n", f); /*输出6位其中小数点后4位的浮点数
<br>
f=3.1416*/ <br>
printf("x=%lf\n", x); /*输出长浮点数x=0.123457*/
<br>
printf("x=%18.16lf\n", x);/*输出18位其中小数点后16位的长浮点
<br>
数x=0.1234567898765432*/ <br>
printf("c=%c\n", c); /*输出字符c=A*/
<br>
printf("c=%x\n", c); /*输出字符的ASCII码值c=41*/
<br>
printf("s[]=%s\n", s); /*输出数组字符串s[]=Hello,
Comrade*/ <br>
printf("s[]=%6.9s\n", s);/*输出最多9个字符的字符串s[]=Hello,
<br>
Co*/ <br>
printf("s=%p\n", s); /*输出数组字符串首字符地址s=FFBE*/
<br>
printf("*p=%s\n", p); /*
输出指针字符串p=How do you do*/ <br>
printf("p=%p\n", p); /*输出指针的值p=0194*/
<br>
getch(); <br>
retunr 0; <br>
} <br>
上面结果中的地址值在不同计算机上可能不同。
<br>
例1.中第一条语句#include<stdio.h>的含义是调用另一个文件stdio.h,
这 <br>
是一个头文件,
其中包括全部标准输入输出库函数的数据类型定义和函数说明。
<br>
Turbo C2.0对每个库函数便用的变量及函数类型都已作了定义与说明,
放在相应 <br>
头文件"*.h"中,
用户用到这些函数时必须要用#include<*.h>或#include"*.
h" <br>
语句调用相应的头文件,
以供连接。若没有用此语句说明,
则连接时将会出现错 <br>
误。 <br>
二、scanf()函数 <br>
scanf()函数是格式化输入函数,
它从标准输入设备(键盘) 读取输入的信息。
<br>
其调用格式为: <br>
scanf("<格式化字符串>",
<地址表>); <br>
格式化字符串包括以下三类不同的字符; <br>
1. 格式化说明符:
格式化说明符与printf()函数中的格式说明符基本相同。
<br>
2. 空白字符: 空白字符会使scanf()函数在读操作中略去输入中的一个或多
<br>
个空白字符。 <br>
3. 非空白字符:
一个非空白字符会使scanf()函数在读入时剔除掉与这个非
<br>
空白字符相同的字符。 <br>
地址表是需要读入的所有变量的地址,
而不是变量本身。这与printf()函数 <br>
完全不同,
要特别注意。各个变量的地址之间同","分开。
<br>
例2: <br>
main() <br>
{ <br>
int i, j; <br>
printf("i, j=?\n"); <br>
scanf("%d, %d", &i, &j); <br>
} </p>
<p> 上例中的scanf()函数先读一个整型数,
然后把接着输入的逗号剔除掉, 最 <br>
后读入另一个整型数。如果","这一特定字符没有找到,
scanf()函数就终止。若 <br>
参数之间的分隔符为空格,
则参数之间必须输入一个或多个空格。 <br>
说明: <br>
(1).
对于字符串数组或字符串指针变量,
由于数组名和指针变量名本身就 <br>
是地址, 因此使用scanf()函数时,
不需要在它们前面加上"&"操作符。
<br>
例3 <br>
mian() <br>
{ <br>
char *p, str[20]; <br>
scanf("%s", p);
/*从健盘输入字符串*/ <br>
scanf("%s", str); <br>
printf("%s\n", p);
/*向屏幕输出字符串*/ <br>
printf("%s\n", str); <br>
} </p>
<p> (2).
可以在格式化字符串中的"%"各格式化规定符之间加入一个整数,
表示 <br>
任何读操作中的最大位数。 <br>
如例3中若规定只能输入10字符给字符串指针p,
则第一条scanf() 函数语句 <br>
变为 <br>
scanf("%10s", p); <br>
程序运行时一旦输入字符个数大于10, p就不再继续读入,
而后面的一个读 <br>
入函数即scanf("%s", str)就会从第11个字符开始读入。
<br>
实际使用scanf()函数时存在一个问题,
下面举例进行说明: <br>
当使用多个scanf()函数连续给多个字符变量输入时,
例如: <br>
main() <br>
{ <br>
char c1, c2; <br>
scanf("%c", &c1); <br>
scanf("%c", &c2); <br>
printf("c1 is %c, c2 is %c", c2\1, c2); <br>
} </p>
<p> 运行该程序, 输入一个字符A后回车
(要完成输入必须回车), 在执行scanf <br>
("%c", &c1)时, 给变量c1赋值"A",
但回车符仍然留在缓冲区内, 执行输入语句 <br>
scanf("%c", &c2)时, 变量c2输出的是一空行,
如果输入AB后回车, 那么输出结 <br>
果为: c1 is A, c2 is B。 <br>
要解决以上问题,
可以在输入函数前加入清除函数fflush()(
这个函数的使 <br>
用方法将在本节最后讲述)。修改以上程序变成:
<br>
#include<stdio.h> <br>
main() <br>
{ <br>
char c1, c2; <br>
scanf("%c", &c1); <br>
fflush(stdin); <br>
scanf("%c", &c2); <br>
printf("c1 is %c, c2 is %c", c1, c2); <br>
} </p>
<p> 1.1.2
非格式化输入输出函数 <br>
非格式化输入输出函数可以由上面讲述的标准格式化输入输出函数代替,
但 <br>
这些函数编译后代码少, 相对占用内存也小,
从而提高了速度, 同时使用也比较 <br>
方便。下面分别进行介绍。 <br>
一、puts()和gets()函数 <br>
1. puts()函数 <br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -