从零开始的嵌入式生活:c语言的输出

输出(printf)

  printf 是指格式化输出函数,主要功能是向标准输出设备(终端)按规定格式输出信息。printf 是C语言标准库函数,定义于头文件 <stdio.h>。printf 函数的一般调用格式为:printf("<格式化字符串>", <参量表>) 。输出的字符串除了可以是字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义

功能

printf 函数在输出格式 format 的控制下,将其参数进行格式化,并在标准输出设备(显示器、控制台等)上打印出来。

返回值

如果函数执行成功,则返回所打印的字符总数,如果函数执行失败,则返回一个负数

#include <stdio.h>

int main(void)
{
    int cout;

    float f = 251;
    int w = 19.427;
    int x = 92.78;
    int y = 0.52;
    int z = -87.27;
   
    cout = printf("f=%f,w=%d,x=%d,y=%d,z=%d\n", f, w, x, y, z); //cout为printf函数的返回值
    printf("cout:%d\n", cout);

    return 0;
}

结果:

f=251.000000,w=19,x=92,y=0,z=-87
cout:33         //上面字符总数+1(\n)

 

说明符(specifier)  

用于规定输出数据的类型,含义如下:

 示例:

#include <stdio.h>

int main(void)
{
    char ch = 'c';
    int count = -112;
    float  f = 100.0;
    char *p = &ch;  //指针变量


    printf("ch:%c, count:%d, f:%f, p:%p \n", ch, count, f, p); // "\n" 表示换行的转义字符

    return 0;
}

输出: 

ch:c, count:-112, f:100.000000, p:0xffffcbef

 flags(标志) 

用于规定输出样式,含义如下:

示例:

#include <stdio.h>

#define PAGES 931

int main() 
{
    const double RENT = 3852.99;  // const-style constant
 
    printf("*%-10d*\n", PAGES);                            //左对齐,右边补空格
    printf("*%+4.2f*\n", RENT);                            //输出正负号
    printf("%x %X %#x\n", 31, 31, 31);                     //输出0x
    printf("**%d**% d**% d**\n", 42, 42, -42);             //正号用空格替代,负号输出
    printf("**%5d**%5.3d**%05d**%05.3d**\n", 6, 6, 6, 6);  //前面补0
 
    return 0;
}

 输出:

*931       *
*+3852.99*
1f 1F 0x1f
**42** 42**-42**
**    6**  006**00006**  006**

width(最小宽度)

用于控制显示字段的宽度,取值和含义如下:

示例: 

#include <stdio.h>
#define PAGES 931
int main()
 {
    printf("*%2d*\n", PAGES);         //输出的字段长度大于最小宽度,不会截断输出
    printf("*%10d*\n", PAGES);        //默认右对齐,左边补空格      
    printf("*%*d*\n", 2, PAGES);      //等价于 printf("*%2d*\n",PAGES)
    return 0;
}

输出: 

*931*
*       931*
*931*

 

precision(精度)

用于指定输出精度,取值和含义如下:

示例:

#include <stdio.h>
int main() 
{
    const double RENT = 3852.99;  // const-style constant
    printf("*%4.2f*\n", RENT);
    printf("*%3.1f*\n", RENT);
    printf("*%10.3f*\n", RENT);
 
    return 0;
}

 输出:

*3852.99*
*3853.0*
*  3852.990*

 类型长度(length)

用于控制待输出数据的数据类型长度,取值和含义如下:

示例:

#include <stdio.h>
#define PAGES 336
int main() 
{
    short num = PAGES; 
    long n3 = 2000000000;     long n4 = 1234567890; 
     printf("num as short and unsigned short:  %hd %hu\n", num, num);     
     printf("%ld %ld\n", n3, n4);
 
    return 0;
}

 输出:

num as short and unsigned short:  336 336 2000000000 1234567890

 转义序列

在字符串中会被自动转换为相应的特殊字符,printf() 使用的常见转义字符如下:

 示例:

#include <stdio.h>
int main() 
{

    printf("\'printf\', \"test\"");
    printf("\'helloworld\', \"Thank you\"\r\n");
 
    return 0;
}

输出: 

'printf', "test"'helloworld', "Thank you"

字符的输出

在计算机当中,所有的字符(键盘上的所有按键就是字符),在存储空间时均以二进制进行存储(二进制可化为八进制、十进制、十六进制),这样的对应关系称为ASCII码。

 示例:

#include <stdio.h>
int main() 
{

    char ch = 'A';  //字符 'A' 字符表示时用' '两个单引号括起来

    printf("ch:%d\n", ch);  //将字符以十进制进制打印
    printf("ch:%c", ch);  //将字符以十进制进制打印
 
    return 0;
}

输出:

ch:65
ch:A  

 ASCII码表

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值