1.1.1 格式化输入输出函数

一、printf()函数

printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出

信息。在编写程序时经常会用到此函数。printf()函数的调用格式为:

printf("",

);

其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原

样输出; 另一部分是格式化规定字符,

以"%"开始, 后跟一个或几个规定字符,

用来确定输出内容格式。

参量表是需要输出的一系列参数, 其个数必须与格式化字符串所说明的输出

参数个数一样多, 各参数之间用","分开, 且顺序一一对应, 否则将会出现意想

不到的错误。

1. 格式化规定符

Turbo

C2.0提供的格式化规定符如下:

━━━━━━━━━━━━━━━━━━━━━━━━━━

符号 作用

——————————————————————————

%d 十进制有符号整数

%u 十进制无符号整数

%f 浮点数

%s

字符串

%c 单个字符

%p 指针的值

%e 指数形式的浮点数

%x, %X 无符号以十六进制表示的整数

%0

无符号以八进制表示的整数

%g 自动选择合适的表示法

━━━━━━━━━━━━━━━━━━━━━━━━━━

说明:

(1).

可以在"%"和字母之间插进数字表示最大场宽。

例如: %3d 表示输出3位整型数, 不够3位右对齐。

%9.2f 表示输出场宽为9的浮点数,

其中小数位为2, 整数位为6,

小数点占一位, 不够9位右对齐。

%8s 表示输出8个字符的字符串, 不够8个字符右对齐。

如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出。

但对浮点数, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出;

若小数部分位数超过了说明的小数位宽度, 则按说明的宽度以四舍五入输出。

另外, 若想在输出值前加一些0, 就应在场宽项前加个0。

例如:

%04d 表示在输出一个小于4位的数值时, 将在前面补0使其总宽度

为4位。

如果用浮点数表示字符或整型量的输出格式,

小数点后的数字代表最大宽度,

小数点前的数字代表最小宽度。

例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9, 则

第9个字符以后的内容将被删除。

(2). 可以在"%"和字母之间加小写字母l, 表示输出的是长型数。

例如: %ld

表示输出long整数

%lf 表示输出double浮点数

(3). 可以控制输出左对齐或右对齐, 即在"%"和字母之间加入一个"-" 号可

说明输出为左对齐, 否则为右对齐。

例如: %-7d 表示输出7位整数左对齐

%-10s 表示输出10个字符左对齐

2.

一些特殊规定字符

━━━━━━━━━━━━━━━━━━━━━━━━━━

字符 作用

——————————————————————————

换行

f 清屏并换页

回车

Tab符

xhh 表示一个ASCII码用16进表示,

其中hh是1到2个16进制数

━━━━━━━━━━━━━━━━━━━━━━━━━━

例1

#include#includeint main()

{

char c, s[20], *p;

int a=1234, *i;

float f=3.141592653589;

double x=0.12345678987654321;

p="How do you do";

strcpy(s, "Hello,

Comrade");

*i=12;

c='x41';

printf("a=%d

", a); /*结果输出十进制整数a=1234*/

printf("a=%6d

", a); /*结果输出6位十进制数a= 1234*/

printf("a=%06d

", a);

/*结果输出6位十进制数a=001234*/

printf("a=%2d

", a); /*a超过2位, 按实际值输出a=1234*/

printf("*i=%4d

", *i); /*输出4位十进制整数*i= 12*/

printf("*i=%-4d

", *i);

/*输出左对齐4位十进制整数*i=12*/

printf("i=%p

", i); /*输出地址i=06E4*/

printf("f=%f

", f); /*输出浮点数f=3.141593*/

printf("f=6.4f

", f);

/*输出6位其中小数点后4位的浮点数

f=3.1416*/

printf("x=%lf

", x); /*输出长浮点数x=0.123457*/

printf("x=%18.16lf

", x);/*输出18位其中小数点后16位的长浮点

数x=0.1234567898765432*/

printf("c=%c

", c); /*输出字符c=A*/

printf("c=%x

", c);

/*输出字符的ASCII码值c=41*/

printf("s[]=%s

", s); /*输出数组字符串s[]=Hello, Comrade*/

printf("s[]=%6.9s

", s);/*输出最多9个字符的字符串s[]=Hello,

Co*/

printf("s=%p

", s); /*输出数组字符串首字符地址s=FFBE*/

printf("*p=%s

", p); /*

输出指针字符串p=How do you do*/

printf("p=%p

", p); /*输出指针的值p=0194*/

getch();

retunr 0;

}

上面结果中的地址值在不同计算机上可能不同。

例1.中第一条语句#include的含义是调用另一个文件stdio.h, 这

是一个头文件,

其中包括全部标准输入输出库函数的数据类型定义和函数说明。

二、scanf()函数

scanf()函数是格式化输入函数, 它从标准输入设备(键盘)

读取输入的信息。

其调用格式为:

scanf("", );

格式化字符串包括以下三类不同的字符;

1. 格式化说明符: 格式化说明符与printf()函数中的格式说明符基本相同。

2. 空白字符:

空白字符会使scanf()函数在读操作中略去输入中的一个或多

个空白字符。

3. 非空白字符:

一个非空白字符会使scanf()函数在读入时剔除掉与这个非

空白字符相同的字符。

地址表是需要读入的所有变量的地址,

而不是变量本身。这与printf()函数

完全不同, 要特别注意。各个变量的地址之间同","分开。

例2:

main()

{

int i, j;

printf("i, j=?

");

scanf("%d, %d", &i, &j);

}

上例中的scanf()函数先读一个整型数, 然后把接着输入的逗号剔除掉, 最

后读入另一个整型数。如果","这一特定字符没有找到,

scanf()函数就终止。若

参数之间的分隔符为空格, 则参数之间必须输入一个或多个空格。

说明:

(1).

对于字符串数组或字符串指针变量, 由于数组名和指针变量名本身就

是地址, 因此使用scanf()函数时, 不需要在它们前面加上"&"操作符。

例3

mian()

{

char *p, str[20];

scanf("%s", p); /*从健盘输入字符串*/

scanf("%s", str);

printf("%s

", p); /*向屏幕输出字符串*/

printf("%s

",

str);

}

(2). 可以在格式化字符串中的"%"各格式化规定符之间加入一个整数, 表示

任何读操作中的最大位数。

如例3中若规定只能输入10字符给字符串指针p, 则第一条scanf() 函数语句

变为

scanf("%10s", p);

程序运行时一旦输入字符个数大于10, p就不再继续读入, 而后面的一个读

入函数即scanf("%s", str)就会从第11个字符开始读入。

实际使用scanf()函数时存在一个问题, 下面举例进行说明:

当使用多个scanf()函数连续给多个字符变量输入时, 例如:

main()

{

char c1, c2;

scanf("%c", &c1);

scanf("%c",

&c2);

printf("c1 is %c, c2 is %c", c21, c2);

}

运行该程序,

输入一个字符A后回车 (要完成输入必须回车), 在执行scanf

("%c", &c1)时, 给变量c1赋值"A", 但回车符仍然留在缓冲区内,

执行输入语句

scanf("%c", &c2)时, 变量c2输出的是一空行, 如果输入AB后回车, 那么输出结

果为: c1 is A,

c2 is B。

要解决以上问题, 可以在输入函数前加入清除函数fflush()( 这个函数的使

用方法将在本节最后讲述)。修改以上程序变成:

#includemain()

{

char c1, c2;

scanf("%c",

&c1);

fflush(stdin);

scanf("%c", &c2);

printf("c1 is %c, c2

is %c", c1, c2);

}

1.1.2 非格式化输入输出函数

非格式化输入输出函数可以由上面讲述的标准格式化输入输出函数代替, 但

这些函数编译后代码少, 相对占用内存也小, 从而提高了速度,

同时使用也比较

方便。下面分别进行介绍。

一、puts()和gets()函数

1. puts()函数

puts()函数用来向标准输出设备(屏幕)写字符串并换行, 其调用格式为:

puts(s);

其中s为字符串变量(字符串数组名或字符串指针)。

puts()函数的作用与语printf("%s

", s)相同。

例4:

main()

{

char s[20], *f; /*定义字符串数组和指针变量*/

strcpy(s, "Hello!");

/*字符串数组变量赋值*/

f="Thank you"; /*字符串指针变量赋值*/

puts(s);

puts(f);

}

说明:

(1). puts()函数只能输出字符串, 不能输出数值或进行格式变换。

(2).

可以将字符串直接写入puts()函数中。如:

puts("Hello, Turbo C2.0");

2. gets()函数

gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束, 但回车符

不属于这个字符串。其调用格式为:

gets(s);

其中s为字符串变量(字符串数组名或字符串指针)。

gets(s)函数与scanf("%s", &s)相似, 但不完全相同,

使用scanf("%s", &s)

函数输入字符串时存在一个问题, 就是如果输入了空格会认为输入字符串结束,

空格后的字符将作为下一个输入项处理, 但gets() 函数将接收输入的整个字符

串直到回车为止。

例5

main()

{

char s[20], *f;

printf("What's your name?

");

gets(s);

/*等待输入字符串直到回车结束*/

puts(s); /*将输入的字符串输出*/

puts("How old are you?");

gets(f);

puts(f);

}[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9650775/viewspace-923206/,如需转载,请注明出处,否则将追究法律责任。

c语言中用于格式化输出的函数,C语言中格式化输入输出函数(转)相关推荐

  1. R语言ggplot2可视化:使用geom_line函数将dataframe中数据可视化为时间序列(或折线图)(Time Series Plot From a Data Frame)、添加标题、副标题

    R语言ggplot2可视化:使用geom_line函数将dataframe中数据可视化为时间序列(或折线图)(Time Series Plot From a Data Frame).添加标题.副标题. ...

  2. R语言使用car包的influencePlot函数将回归分析中的离群点(outlier)、杠杆(leverage)和影响(influence)的信息组合成一个高度信息量丰富的合成图

    R语言使用car包的influencePlot函数将回归分析中的离群点(outlier).杠杆(leverage)和影响(influence)的信息组合成一个高度信息量丰富的合成图 目录

  3. R语言ggplot2可视化抑制可视化网格中的竖线输出、抑制可视化网格中的横线线输出、抑制背景网格输出实战

    R语言ggplot2可视化抑制可视化网格中的竖线输出.抑制可视化网格中的横线线输出.抑制背景网格输出实战 目录

  4. R语言使用epiDisplay包的summ函数计算dataframe中指定变量在不同分组变量下的描述性统计汇总信息并可视化有序点图、自定义cex.main参数配置标题文本字体的大小

    R语言使用epiDisplay包的summ函数计算dataframe中指定变量在不同分组变量下的描述性统计汇总信息并可视化有序点图.自定义cex.main参数配置标题文本字体的大小(名称.有效值个数. ...

  5. R语言使用epiDisplay包的summ函数计算dataframe中指定变量的描述性统计汇总信息并可视化有序点图、通过dot.col参数配置数据点的颜色(名称、有效值个数、均值、中位数、标准差)

    R语言使用epiDisplay包的summ函数计算dataframe中指定变量的描述性统计汇总信息并可视化有序点图.通过dot.col参数配置数据点的颜色(名称.有效值个数.均值.中位数.标准差.最大 ...

  6. R语言使用epiDisplay包的summ函数计算dataframe中指定变量的描述性统计汇总信息并可视化有序点图、并添加箱图(名称、有效值个数、均值、中位数、标准差、最大值、最小值)

    R语言使用epiDisplay包的summ函数计算dataframe中指定变量的描述性统计汇总信息并可视化有序点图.并添加箱图(名称.有效值个数.均值.中位数.标准差.最大值.最小值) 目录

  7. R语言使用epiDisplay包的summ函数计算dataframe中指定变量在不同分组变量下的描述性统计汇总信息并可视化有序点图、自定义cex.Y.axis参数设置Y轴轴标签字体的大小

    R语言使用epiDisplay包的summ函数计算dataframe中指定变量在不同分组变量下的描述性统计汇总信息并可视化有序点图.自定义cex.Y.axis参数设置Y轴轴标签字体的大小(名称.有效值 ...

  8. Matlab中用于数据预测spline()函数的使用

    Matlab中用于数据预测spline()函数的使用 ​ 再matlab中spline函数是利用三次方样条数据插值 语法 s = spline(x,y,xq) pp = spline(x,y) s = ...

  9. pandas使用replace函数替换dataframe中的值:replace函数对dataframe中的多个值进行替换、即一次性同时对多个值进行替换操作

    pandas使用replace函数替换dataframe中的值:replace函数对dataframe中的多个值进行替换.即一次性同时对多个值进行替换操作 目录

最新文章

  1. FireBug的控制台管理
  2. if 语句 写了return 报错
  3. qmc0文件怎么转换mp3_音频转换器哪个好 怎么剪切MP3音频制作手机铃声
  4. [主席树]HDOJ4417 Super Mario
  5. html5游戏开发教程实战:五子棋、四子棋、围棋、翻转棋四种对弈游戏,仅仅100行代码
  6. 在线供应链管理系统一体化解决方案,整合B2B上下游供应资源
  7. 永中office linux卸载,安装永中Office for linux
  8. Referenced file contains errors解决
  9. win10 服务(本机)在哪里打开? 怎么样打开系统服务窗口?
  10. php简单论坛登录注册,php登录注册求救
  11. ARC 强变量 弱变量
  12. Gossiping闲聊路由协议
  13. itop和mysql_LAMP环境搭建+iTop安装(实测使用centos7更方便)
  14. 一文搞懂PMP挣值管理那些让你头疼的公式
  15. 【blender建模功能】06 多边形建形工具
  16. HNUCM信息科学与工程学院第二届新生赛——正式赛
  17. 未来从事计算机职业规划,计算机专业职业生涯规划书2000字
  18. 2020起重机司机(限桥式起重机)模拟考试系统及起重机司机(限桥式起重机)考试试题
  19. 2021年“春秋杯”新年欢乐赛--十二宫的挑衅
  20. [Bug Fix]Messy Audio语音电话不清晰问题

热门文章

  1. CSS cursor: pointer; 设置鼠标移动上方变为手指图标
  2. CDN加速原理的那些事
  3. echarts双向柱状图效果实现
  4. 如何把msg.html导入微信,weui Msg提示页
  5. Windows搭建FTP服务器
  6. c语言程序在cmd,在windows命令行编译运行c程序
  7. PyQt5 将.ui文件转为.py文件并用另一个.py调用
  8. flask项目开发到部署笔记
  9. java 面向对象的特征(详解):
  10. Java面向对象特征之三 多态