`
y150988451
  • 浏览: 195360 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

printf,printk格式

    博客分类:
  • c++
阅读更多

printf()函数是格式输出函数,请求printf()打印变量的指令取决与变量的类型.例如,在打印整数是使用%d符号,在打印字符是用%c 符号.这些符号被称为转换说明.因为它们指定了如何不数据转换成可显示的形式.下列列出的是ANSI C标准peintf()提供的各种转换说明.

 

          转换说明及作为结果的打印输出

%a                浮点数、十六进制数字和p-记数法(C99)

%A    浮点数、十六进制数字和p-记法(C99)

%c    一个字符 

%d    有符号十进制整数 

%e    浮点数、e-记数法

%E    浮点数、E-记数法

%f    浮点数、十进制记数法  

%g    根据数值不同自动选择%f或%e.

%G    根据数值不同自动选择%f或%e.

%i               有符号十进制数(与%d相同)

%o    无符号八进制整数

%p    指针    

%s    字符串

%u    无符号十进制整数

%x    使用十六进制数字0f的无符号十六进制整数 

%X    使用十六进制数字0f的无符号十六进制整数

%%    打印一个百分号

  使用printf ()函数

 printf()的基本形式: printf("格式控制字符串",变量列表);

 

#include<cstdio>

int main()

{

    //for int

    int i=30122121;

    long i2=309095024l;

    short i3=30;

    unsigned i4=2123453;

    printf("%d,%o,%x,%X,%ld,%hd,%u\n",i,i,i,i,i2,i3,i4);//如果是:%l,%h,则输不出结果 

    printf("%d,%ld\n",i,i2);//试验不出%ld和%d之间的差别,因为long是4bytes

    printf("%hd,%hd\n\n\n",i,i3);//试验了%hd和%d之间的差别,因为short是2bytes

 

    //for string and char

    char ch1='d';

    unsigned char ch2=160;

    char *str="Hello everyone!";

    printf("%c,%u,%s\n\n\n",ch1,ch2,str);//unsigned char超过128的没有字符对应

 

    //for float and double,unsigned and signed can not be used with double and float

    float fl=2.566545445F;//or 2.566545445f

    double dl=265.5651445;

    long double dl2=2.5654441454;

 

 

    //%g没有e格式,默认6位包括小数点前面的数,

    //%f没有e格式,默认6位仅只小数点后面包含6位

    //%e采用e格式,默认6位为转化后的小数点后面的6位

    printf("%f,%e,%g,%.7f\n",fl,dl,dl,dl);

    printf("%f,%E,%G,%f\n",fl,dl,dl,dl);//%F is wrong

    printf("%.8f,%.10e\n",fl,dl);

    printf("%.8e,%.10f\n\n\n",fl,dl);

 

 

    //for point 

    int *iP=&i;

    char *iP1=new char;

    void *iP2;//dangerous!

    printf("%p,%p,%p\n\n\n",iP,iP1,iP2);

 

    //其他知识:负号,表示左对齐(默认是右对齐);%6.3,6表示宽度,3表示精度

    char *s="Hello world!";

    printf(":%s: \n:%10s: \n:%.10s: \n:%-10s: \n:%.15s: \n:%-15s: \n:%15.10s: \n:%-15.10s:\n\n\n",

        s,s,s,s,s,s,s,s);

    double ddd=563.908556444;

    printf(":%g: \n:%10g: \n:%.10g: \n:%-10g: \n:%.15g: \n:%-15g: \n:%15.10g: \n:%-15.10g:\n\n\n",

        ddd,ddd,ddd,ddd,ddd,ddd,ddd,ddd);

 

    //还有一个特殊的格式%*.* ,这两个星号的值分别由第二个和第三个参数的值指定

    printf("%.*s \n", 8, "abcdefgggggg");

    printf("%*.*f   \n", 3,3, 1.25456f);

 

    return 0;

分享到:
评论

相关推荐

    Linux:printk与printf的区别

    内核层使用printk打印,应用层调用C库的printf打印。在内核层是调用不了文件系统中C库的printf只能用printk。  两者之间的一个显著区别在于printk允许通过指定一个标志来设置优先级(在include/linux/kern_levels.h...

    printk-formats打印格式1

    If variable is of Type,use printk format specifier:Raw pointer value SHOULD be p

    printk调试技术

    printk调试技术

    linux console printk 代码实现分析

    对linux下8250串口驱动和console口实现方法及printk实现进行代码分析 内核版本2.6

    printk_linux_

    linux-1.0.tar.gz,早期linux源码,可用于linux的学习

    Linux内核调试技术之Printk

     在内核调试技术之中,简单的是printk的使用了,它的用法和C语言应用程序中的printf使用类似,在应用程序中依靠的是stdio.h中的库,而在linux内核中没有这个库,所以在linux内核中,使用这个printk要对内核的实现...

    高通平台printk输出log到串口

    # cat /proc/sys/kernel/printk 默认为:4 4 1 7 注释:第一个参数表示控制台log Level,第二个参数表示printk默认的logLevel 2、修改打印(数字之间用空格分开) # echo 8 &gt; /proc/sys/kernel/printk //这样串口...

    Printk日志级别

    linux系统中Printk日志级别简介

    Kernel-Debug-Series-Part3-printk

    Kernel-Debug-Series-Part3-printk

    再简单也不简单2--printf函数打印char型变量

    printf函数打印char型变量。

    Android 实现自己的LOG信息

    在程序开发过程中,LOG是广泛使用的用来记录程序执行过程的机制,它既可以用于程序调试,也可以用于产品运营中的事件记录。...与printf类似,printk提供格式化输入功能,同时,它也具有所有LOG机制的

    嵌入式Linux的调试技术

     Printk函数运行在内核空间,printf函数运行在用户空间。Linux内核程序只能使用printk函数输出调试信息。  防止printk函数降低linux驱动性能  Linux驱动只在开发阶段使用printk函数输出消息。正式发布linux...

    linux内核调试方法总结

    五 printk() 1 printk函数的健壮性 2 printk函数脆弱之处 3 LOG等级 4 记录缓冲区 5 syslogd/klogd 6 dmesg 7 注意 8 内核printk和日志系统的总体结构 9 动态调试 六 内存调试工具 1 MEMWATCH 2 YAMD 3 Electric ...

    GBA工程源程序,开发学习GBA的好东东。

    GBA ARM 游戏机 单片机 包含一个在BG3模式下的英文字符格式化输出函数 printLCD(); 格式化输出列表同标准C兼容 "%?... 原本的printk函数是一个gcc下的源码 可以简化修改在KEIL C51下使用(事实上我就在用 ^_^ )

    实验五:在arm linux中增加系统调用1

    1、 在 ARM -Linux 内核中加入一个系统调用, 系统调用的功能随便你选 2、 提示:系统调用 中打印语句采 printk(内核打印)而非 printf

    能用 VS 2013 编译的 Linux 0.11 源代码

    而且 MASM Intel 格式的汇编代码,可比 GCC AT&T 格式的便于阅读多了。 编辑汇编代码,推荐使用 Notepad++,完美支持 MASM 语法高亮。 首先下载我修改好的 VS 版 Linux 0.11 源码,解压后打开解决方案。 右键点击 ...

    Debugging kernel and modules via GDB.pdf

    比如printk()是调试内核代码时最常用的一种技术,但是这种调试方法需要对问题产生的点有个大概的感知,这样才能有的放矢地在合适的代码处添加打印信息。但是很多情况下,我们对问题产生的原因毫无头绪,也就不可能...

    usb-skeleton.c驱动详细分析

    printk("usb_register failed!\n"); else printk("usb_register successfull!\n"); return result; } //usb出口(卸载) static void __exit usb_skel_exit(void) { /* deregister this driver with the USB ...

    Android系统开发中log的使用方法及简单的原理

    1、linux内核的log输出 在标准的linux内核开发过程中,使用printk,这是一个与printf输出打印齐名的函数,同样提供格式化输出功能,只是其有 打印级别且将信息保存到/proc/kmsg日志中,使用cat命令查看其信息[cat/...

Global site tag (gtag.js) - Google Analytics