【C语言】- 数据输出-printf( )和putchar( )
格式化输出函数printf( )
printf( )功能:
向系统指定输出设备按指定的格式输入任意个任意类型的数据,并返回实际输出的字符数。若出错,将返回负数。
printf( )使用形式:
printf("格式控制字符串",输出项列表);
格式字符(以"%"引导):
(1)d格式字符:用来输出十进制整数。
- %d,按整型数据的实际长度输出。
- %md,m为指定的输出字段的宽度。若实际位数小于m,则左端补空格;若实际位数大于m,则按实际位数输出。
- %ld,输出长整型数据。
(2)o格式字符("%#o"):以八进制形式输出整数。
(3)x格式字符("%#x"):以十六进制形式输出整数。
(4)u格式字符:用来输出unsigned型数据,即无符号数,以十进制输出。
(5)c格式字符:用来输出一个字符。
(6)s格式字符:用来输出一个字符串。
(7)f格式字符:用来输出实数(包括单双精度),以小数形式输出。
- %f,整数部分全输出并输出6位小数。
(8)e格式字符:以指数形式输出实数。
(9)g格式字符:用来输出实数,它根据数值的大小,自动选择f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的零。
格式字符串:
%[flag][width][.prec][F|N|h|L]Type
(1)标志flag:
- "+":对于正数符号位输出为正号"+",对于负数输出"-"。
- 空格(" "):对于正数符号位输出空格,对于负数输出"-"。
- "-":输出时左对齐,右侧补空格。
- "#":加在代表输出八进制的类型字符"o"前表示八进制。
(2)输出宽度width:用十进制整数来表示输出的最少位数。若实际数据的位数多于指定宽度,则按实际位数输出;若少于指定宽度,则补以空格或"0";
(3)精度prec:精度格式符以"."开头,后跟一个十进制整数。
意义:如果输出数字,则表示数字的小数位数;如果输出的时字符,则表示输出字符的个数;若实际位数大于所定义的精度,则超出部分被截去。
(4)长度:F|n|h|l 表示指针是否是远指针,或整数是否是长整数。
- F:表示远指针。
- n:表示近指针。
- h:短整型或单精度浮点数。
- l:长整型或双精度浮点数。
(5)类型Type:
类型指示符:
| 格式字符 | 说明 |
|---|---|
| d,i | 以带符号的十进制形式输出整数 |
| o | 以八进制形式输出整数 |
| u | 以无符号的十进制形式输出整数 |
| x或X | 以十六进制形式输出整数 |
| c | 输出单个字符 |
| s | 输出字符串 |
| f | 以小数形式输出实数 |
| e或E | 以指数形式输出实数 |
| g或G | 自动选择"%f"和"%e"中宽度最小的形式输出实数 |
(6)具体的格式字符串示例:
- %m.nf:输出的实数共占m个字符,其中小数有n个。若实际数值位数不足m个,左端补空格;若实际数值位数超出规定的宽度,则整数部分按实际输出,小数部分四舍五入为n位。
- %e:标准宽度占13位,其中,尾数部分为:整数部分占1位,小数点占1位,小数占6位,e占1位;指数部分为:正负号占1位,指数占3位。
- %m.ne:整个数宽度至少占m位,n为尾数部分的小数部分,不足的在左端补空格,多出的按实际位数输出。
- %ms:输出一个字符串,宽度占m位。若长度小于m,则右对齐,左侧补空格;若长度大于m,则原样输出,不进行截取。
- %-ms:与%ms类似,但长度小于m时,字符串左对齐,右侧补空格。
- %m.ns:整个输出项占m列,但只取字符串中左侧n个字符输出。输出时右对齐,左端补空格。当m<n时,所占宽度m忽略不计,输出字符串的前n个字符。
- %-m.ns:含义与%m.ns相似,将n个字符输出在m列范围内,左对齐,右侧补空格。
(7)注意点:
- 任意一个整型数据也可以以字符形式输出,输出时,如果整形数据超过255的,先对256做取余操作后再输出。
- ”格式字符串“中的格式类型指示符的类型及个数,必须与”输出项列表“中的输出项的数据类型、个数一致,否则会引起输出错误。
- 如果格式类型指示符的个数小于输出项的个数,多余的输出项不予输出;如果格式说明的个数多于输出项的个数,多余的格式项输出不定值或"0"。
单个字符的输出函数putchar( )
putchar( )功能:
向标准输出设备(显示器)输出一个字符,并返回输出字符的ASCII值。
putchar( )使用形式:
putchar(ch);
其中"ch"可以是整型或字符型的常量、变量或表达式,也可以是一个转义字符。输出时,先计算括号内的值,然后根据ASCII码输出相应的字符。
putchar( )函数只能用于单个字符的输出,且一次只能输出一个字符。
常用字母对应的ASCII码值:
A~Z 65~90
a~z 97~122
实例效果:
printf("%d\n",234);
printf("%3d\n",23144);
printf("%3d\n",21);
printf("%#o\n",23);
printf("%#x\n",17);
printf("%c\n",68);
char a[10] = "abcdef";
printf("%s\n",a);
printf("%f\n",10.1);
printf("%g\n",23.2424);
printf("%5.2f\n",0.123);
printf("%5.2f\n",0.1234567);
printf("%e\n",1331.1341123);
printf("%8.3e\n",1331.1341123);
printf("%8.3e\n",1331.2);
printf("%3s\n",a);
printf("%9s\n",a);
printf("%-9s\n",a);
printf("%4.2s\n",a);
printf("%2.5s\n",a);
printf("%-4.2s\n",a);
printf("%-2.5s\n",a);
输出结果:

【C语言】- 数据输出-printf( )和putchar( )的更多相关文章
- C语言数据输入与输出
1 概论 C语言提供了跨平台的数据输入输出函数scanf()和printf()函数,它们可以按照指定的格式来解析常见的数据类型,例如整数,浮点数,字符和字符串等等.数据输入的来源可以是文件,控制台以及 ...
- 了解Java格式化输出printf,一篇就够了
格式化详解 格式化输出 转换符 常用转换符 日期转换 搭配标志 了解C语言的都知道,C语言的输出语句printf();可以对里面的内容格式化然后输出.那么在Java中也给我们提供了相关的方法.两者十分 ...
- C语言动态输出等腰三角形
C语言动态输出等腰三角形 题目要求:输入行数 打印出对应行数的等腰三角形,要求使用for循环嵌套. 思路 while语句写外层死循环 用于判断输出的数据: 分析: 最外层for,来控制最外层行数,存储 ...
- Java面向对象 第2节 Scanner 类和格式化输出printf
§Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. 1.创建 Scanner 对象的基本语法:Scanner s = ...
- 【转】java格式化输出 printf 例子
[转]java格式化输出 printf 例子 转自http://www.cnblogs.com/TankMa/archive/2011/08/20/2146913.html#undefined imp ...
- C 语言实例 - 输出九九乘法口诀表
C 语言实例 - 输出九九乘法口诀表 使用嵌套 for 循环输出九九乘法口诀表. 实例 #include<stdio.h> int main(){ //外层循环变量,控制行 ; //内层循 ...
- C 语言实例 - 输出当前文件执行代码
C 语言实例 - 输出当前文件执行代码 输出当前文件执行代码,__FILE__ 为当前执行的文件常量. 实例 #include <stdio.h> int main() { FILE *f ...
- YTU 2425: C语言习题 输出月份
2425: C语言习题 输出月份 时间限制: 1 Sec 内存限制: 128 MB 提交: 476 解决: 287 题目描述 编写一程序,输入月份号,输出该月的英文月名.例如,输入3,则输出Mar ...
- R语言数据预处理
R语言数据预处理 一.日期时间.字符串的处理 日期 Date: 日期类,年与日 POSIXct: 日期时间类,精确到秒,用数字表示 POSIXlt: 日期时间类,精确到秒,用列表表示 Sys.date ...
随机推荐
- codeforces #305 A Mike and Frog
挺简单的题目,但是有一堆恶心的边界 在刨去恶心的边界之后: 假定我们知道两边的循环节为b1,b2 其中h第一次到达目标的时间为a1,a2 又知道对于答案t t=a1+b1*t1=a2+b2*t2 不妨 ...
- CentOS7.1 Xshell 经常掉线 Connection closed by foreign host
XShell如果经常对CentOS掉线,则VNC肯定连接不上 但是ping CentOS的IP又能ping通,主要原因还是因为sshd的设置问题 #进入ssh目录 cd /etc/ssh #修改ssh ...
- 如何在给快满的Linux分区"无伤"扩容
1. 首先在虚拟机设置里面设置磁盘的扩展,前提条件是该虚拟机没有快照. 2. 在虚拟机设置好以后,需要开机在系统里扩容磁盘 3. 使用 # fdisk /dev/sda 扩展磁盘,具体操作使用 m 选 ...
- C#.Net 如何动态加载与卸载程序集(.dll或者.exe)6-----在不卸载程序域的前提下替换程序集文件。
当某个程序集文件被载入AppDomain,该文件在AppDomain.Unload之前是不能被替换和删除的.使用AppDomainSetup的影像复制功能可以实现在不卸载程序的情况下替换或者删除程序集 ...
- tcp断开的4次挥手
http://blog.csdn.net/fw0124/article/details/7452695 由于TCP连 接是全双工的,因此每个方向都必须单独进行关闭.这原则是当一方完成它的数据发送任务后 ...
- IE9 表格错位bug
最近做项目的时候,出现一个只在原生IE9(非模拟)下的bug. bug图片如下: 以上两个模块的html代码和样式都是一样的,然而下面的显示却出现了各种对齐的bug. 用IE9的调试器查看,代码完全一 ...
- vbox android x86 分辨率
D:\Program Files\Oracle\VirtualBox>VBoxManage setextradata "android" "CustomVideoM ...
- C#调用Geocoding API进行地理编码与逆编码
使用C#调用Geocoding API来将地址转为经纬度,或者将经纬度转变为具体的地址. Geocoding API的详细介绍参见:http://developer.baidu.com/map/web ...
- bzoj1789 AHOI 维护数列(线段树)
首先想到线段树,然后刚开始写忽然想到树状数组求和岂不是更快,而且编程复杂度又小,于是把之前写的删掉,写树状数组,写完模版之后忽然发现这题竟然是区间修改! 于是又删掉重写,忽然发现不会处理又加又乘的,果 ...
- HDU 4571 Travel in time ★(2013 ACM/ICPC长沙邀请赛)
[题意]给定N个点,每个点有一个停留所需的时间Ci,和停留能够获得的满意度Si,有M条边,每条边代表着两个点走动所需的时间ti,现在问在规定的T时间内从指定的一点S到E能够获得的最大的满意度是多少?要 ...