`
y150988451
  • 浏览: 197551 次
  • 性别: 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

    在Linux内核编程中,`printk`是一个用于打印调试信息的重要函数,类似于C语言中的`printf`。本文将深入探讨`printk`格式化字符串的使用,特别是针对不同类型的变量选择正确的格式指定符,这对于理解和编写可靠的内核...

    printk调试技术

    `printk`函数接收一个格式化字符串,类似于C语言中的`printf`,但它可以安全地在内核上下文中使用。基本调用形式如下: ```c printk(KERN_ALERT "这是级别为警报的打印信息:%d\n", value); ``` 这里的`KERN_ALERT...

    Linux内核调试技术之Printk

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

    Kernel-Debug-Series-Part3-printk

    printk类似于用户空间的printf函数,但它是为内核设计的,可以安全地在内核模式下执行。它提供了多种日志级别,用于区分不同严重程度的信息,如KERN_EMERG(紧急情况)、KERN_ALERT(警报)、KERN_CRIT(严重)、...

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

    在编程世界中,`printf`函数是C语言标准库中的一个关键成员,它用于格式化输出数据到标准输出设备,如显示器或打印机。这个函数基于`printf`家族,包括`fprintf`、`sprintf`等,它们都遵循类似的语法和规则。在...

    Linux系统驱动开发调试技术指南.docx

    首先,`printk`是Linux内核中用于打印调试信息的关键函数,类似于C语言中的`printf`。通过在代码中插入`printk`语句,开发者可以追踪程序执行的流程和状态。`printk`接受一个或多个参数,并允许在字符串前添加宏来...

    Linux驱动程序调试的常用方法.pdf

    printk 的功能与我们经常在应用程序中使用的 printf 是一样的,不同之处在于 printk 可以在打印字符串前面加上内核定义的宏,例如 KERN_ALERT、KERN_CRIT 等。这些宏是用来定义需要打印的字符串的级别。值越小,级别...

    Android 实现自己的LOG信息

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

    linux内核调试简介

    首先,printk是Linux内核中用于打印信息的主要函数,其使用方式与用户空间的printf函数类似。printk函数能够输出不同级别的信息到内核消息日志中,其中记录级别用数字0到7表示,数字越小表示级别越高,越紧急。在...

    Linux调试技术介绍

    - 它的工作原理类似于用户空间中的`printf()`函数,但是具有更多的灵活性和控制选项。 #### 三、`printk()`函数详解 1. **基本用法**: - 基本语法:`printk(KERN_LEVEL "message");` - 其中`KERN_LEVEL`代表...

    嵌入式Linux的调试技术

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

    利用远程纠错跟踪Linux TCP_IP内核源代码.pdf

    **1)** **使用内核函数printk**:printk类似于C语言中的printf函数,用于在内核空间打印消息,帮助开发者查看内核运行时的状态。与printf不同,printk能够安全地在内核环境中使用,且具备不同级别的日志输出控制,以...

    Linux内核调试技术的方法研究.pdf

    `printk`是Linux内核中的一个日志打印函数,类似于C语言中的`printf`,它可以在内核运行过程中输出信息,帮助开发者追踪代码执行路径,检测变量状态,尤其是在没有图形化调试工具的情况下,`printk`起到了关键的诊断...

    linux内核 0.11版本源码 带中文注释

    // 送格式化输出到一字符串中(在kernel/vsprintf.c,92 行)。 extern void init (void); // 函数原形,初始化(在168 行)。 extern void blk_dev_init (void); // 块设备初始化子程序(kernel/blk_drv/ll_rw_...

    linux内核调试技术

    `printk()`是内核中非常重要的调试工具之一,它类似于用户空间的`printf()`函数,用于向内核日志系统发送消息。这些消息会被klogd守护进程捕获,并且最终写入到/var/log/messages文件中,也可以直接显示在控制台上。...

Global site tag (gtag.js) - Google Analytics