首页 > 编程知识 正文

格式化输出函数为,printf输出格式有哪些

时间:2023-05-03 17:19:50 阅读:110852 作者:2883

printf格式控制的完整格式:

% - 0 m.n l或h格式的字符

对构成格式说明的各项目进行说明。

% :表示格式说明的开始符号,不可缺少。

- :有-表示左对齐输出,省略表示右对齐输出。

)有0 )时表示指定空位为0,省略时表示没有指定空位。

(n ) m是指域名宽度,即对应的输出项目在输出设备中所占的字符数。 n指的是精度。 说明输出实数的小数位数。 对于数值类型,如果未指定n,则隐式精度为n=6位。

l或h:l对于整数型指长型,对于实型指双型。 h用于将整数格式字符修改为短整型。

-------------请参阅

格式字符

格式字符指定输出项目的数据类型和输出格式。

(d格式)用于输出十进制整数。 这些用法包括:

%d :以整数数据的实际长度输出。

%md:m是指定输出字段的宽度。 数据位数小于m时,在左端填补空格,大于m时,以实际位数输出。

% LD :输出长数据。

)格式)以无符号的8进制格式输出整数。 长整数可以以“%lo”格式输出。 也可以指定以“%mo”格式输出字段宽度。

示例:

main () )

{ int a=-1;

printf('%d,%o ',a,a );

}

执行结果:-1,177777

程序分析:-1在存储器单元中(作为补码存储) 1111111111111111111 )转换为2、8进制时) 177777 ) 8。

(x格式)以无符号的16进制格式输出整数。 长整数可以以“%lx”格式输出。 也可以指定以“%mx”格式输出字段宽度。

) u格式)以无符号10进制格式输出整数。 长整数可以以“%lu”格式输出。 也可以指定以“%mu”格式输出字段宽度。

) c格式)输出一个字符。

) s格式)用于输出字符串。 有几个用法

%s :例如,printf('%s”,“CHINA”)将输出“CHINA”字符串。 不包括双引号。

%ms :输出的字符串占m列,如果字符串本身的长度大于m,则突破获得m的限制,输出所有字符串。 如果字符串长度小于m,则向左填充空格。

%-ms :如果字符串长度小于m,则字符串在m列范围内靠左,并在右边填充空格。

%m.ns :输出占m列,但只取字符串的左端n个字符。 这n个字符输出在m列的右侧,左边有空格。 注:如果未指定n,则默认值为0。

%-m.ns :其中m、n的含义相同,n个字符的输出位于m列范围的左侧,右边填充空格。 nm时,会自动取n的值。 这意味着可以保证n个字符的正常输出。 注:如果未指定n,则默认值为0。

对于sprintf(desc,“%m.ns”,sour ); 如果desc空间足够,则会自动在%m.ns字符串的末尾添加空字符。 与strncpy不同。

例如sprintf(desc,“%.3s”,“123456”; 如果desc空格=4个字节,则第四个字节为空字符。

) f形式)用于以小数形式输出实数(包括单精度、双精度)。 这些用法包括:

%f :不指定宽度,整数部分全部输出小数6位并输出。

%m.nf :输出共占m列,其中有n位小数。 例如,数值宽度比m的左端小来填充空间。

%-m.nf :输出共占n列,其中有n位小数。 例如,如果数字的宽度小于m的右端,则填充空格。

) e格式)以指数形式输出实数。 可以使用以下格式:

%e )数字部分(也称为尾数)输出6位小数,指数部分包含5位或4位。

%m.ne和%-m.ne:m、n和“-”的字符含义与前面相同。 这里,n表示数据数字部分的小数位数,m表示输出数据整体所占的宽度。

) g格式)自动选择f格式或e格式中较短的一个输出,不输出无意义的零。

-------------请参阅

有关printf函数的详细信息:

输出字符“%”时,“格式控制”字符串中必须用连续的2个%表示,如:

printf(%f% )、1.0/3;

输出0.333333%。

-------------请参阅

对于单精度数,使用%f格式输出时,只有前7位是有效数字,小数为6位。

对于双精度数,使用%lf格式输出时,前16位是有效数字,小数为6位。

------------- -请参阅

printf )函数是printf )请求打印变量的命令依赖于变量的种类的形式的输出函数,例如打印整数中使用%d符号,打印文字中使用%c符号。 这些符号被称为转换指令,以指定如何将数据转换为可显示的格式

转换说明和结果打印输出

%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("%.*s n", 8, "abcdefgggggg");
    printf("%*.*f   n", 3,3, 1.25456f); 使用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,%un",i,i,i,i,i2,i3,i4);// 如果是:%l,%h,则输不出结果
    printf("%d,%ldn",i,i2);// 试验不出%ld和%d之间的差别,因为long是4bytes
    printf("%hd,%hdnnn",i,i3);//试验了%hd和%d之间的差别,因为short是2bytes
    //for string and char
    char ch1='d';
    unsigned char ch2=160;
    char *str="Hello everyone!";
    printf("%c,%u,%snnn",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,%.7fn",fl,dl,dl,dl);
    printf("%f,%E,%G,%fn",fl,dl,dl,dl);//%F is wrong
    printf("%.8f,%.10en",fl,dl);
    printf("%.8e,%.10fnnn",fl,dl);

    //for point
    int *iP=&i;
    char *iP1=new char;
    void *iP2;//dangerous!
    printf("%p,%p,%pnnn",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:nnn",
        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:nnn",
        ddd,ddd,ddd,ddd,ddd,ddd,ddd,ddd);
    //还有一个特殊的格式%*.* ,这两个星号的值分别由第二个和第三个参数的值指定     printf("%.*s n", 8, "abcdefgggggg");
    printf("%*.*f   n", 3,3, 1.25456f);       return 0;
}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。