请大家向我开火吧。。。我不懂printf(结帖,有批评可以发来,不要发关于printf)
程序代码:
#include "stdio.h"
int main()
{
char *s = "hello world\n\0";
printf(s);
return 0;
}
int main()
{
char *s = "hello world\n\0";
printf(s);
return 0;
}
大家好,我是来接受批评教育的,借此良机,批评教育都在此。。。很想看看。。。
[[it] 本帖最后由 c_acceleration 于 2008-5-2 11:48 编辑 [/it]]
----------------解决方案--------------------------------------------------------
#include "stdio.h"
int main()
{
char *s = "hello world ! %s\n\0";
printf(s,"c_acceleration");
return 0;
}
----------------解决方案--------------------------------------------------------
printf(格式化输出数据)
相关函数 scanf,snprintf
表头文件 #include<stdio.h>
定义函数 int printf(const char * format,.............);
函数说明
printf()会根据参数format字符串来转换并格式化数据,然后将结
果写出到标准输出设备,直到出现字符串结束('\0')为止。参数
format字符串可包含下列三种字符类型
1.一般文本,伴随直接输出。
2.ASCII控制字符,如\t、\n等。
3.格式转换字符。
格式转换为一个百分比符号(%)及其后的格式字符所组成。一般而
言,每个%符号在其后都必需有一printf()的参数与之相呼应(只
有当%%转换字符出现时会直接输出%字符),而欲输出的数据类
型必须与其相对应的转换字符类型相同。
Printf()格式转换的一般形式如下
%(flags)(width)(.prec)type
以中括号括起来的参数为选择性参数,而%与type则是必要的。底
下先介绍type的几种形式整数
%d 整数的参数会被转成一有符号的十进制数字
%u 整数的参数会被转成一无符号的十进制数字
%o 整数的参数会被转成一无符号的八进制数字
%x 整数的参数会被转成一无符号的十六进制数字,并以小写
abcdef表示
%X 整数的参数会被转成一无符号的十六进制数字,并以大写
ABCDEF表示浮点型数
%f double 型的参数会被转成十进制数字,并取到小数点以下六
位,四舍五入。
%e double型的参数以指数形式打印,有一个数字会在小数点前,
六位数字在小数点后,而在指数部分会以小写的e来表示。
%E 与%e作用相同,唯一区别是指数部分将以大写的E 来表示。
%g double 型的参数会自动选择以%f 或%e 的格式来打印,其标
准是根据欲打印的数值及所设置的有效位数来决定。
%G 与%g 作用相同,唯一区别在以指数形态打印时会选择%E 格
式。
字符及字符串
%c 整型数的参数会被转成unsigned char型打印出。
%s 指向字符串的参数会被逐字输出,直到出现NULL字符为止
%p 如果是参数是“void *”型指针则使用十六进制格式显示。
prec 有几种情况
1. 正整数的最小位数。
2.在浮点型数中代表小数位数
3.在%g 格式代表有效位数的最大值。
4.在%s格式代表字符串的最大长度。
5.若为×符号则代表下个参数值为最大长度。
width为参数的最小长度,若此栏并非数值,而是*符号,则表示以
下一个参数当做参数长度。
flags 有下列几种情况
#NAME?
+ 一般在打印负数时,printf()会加印一个负号,整数则不加任
何负号。此旗标会使得在打印正数前多一个正号(+)。
# 此旗标会根据其后转换字符的不同而有不同含义。当在类型为o
之前(如%#o),则会在打印八进制数值前多印一个o。
而在类型为x 之前(%#x)则会在打印十六进制数前多印’0x’,
在型态为e、E、f、g或G 之前则会强迫数值打印小数点。在类型为g
或G之前时则同时保留小数点及小数位数末尾的零。
0 当有指定参数时,无数字的参数将补上0。默认是关闭此旗标,所
以一般会打印出空白字符。
返回值 成功则返回实际输出的字符数,失败则返回-1,错误原因存于errno中。
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]Knocker[/un] 在 2008-5-1 13:13 的发言:[/bo]
#include "stdio.h"
int main()
{
char *s = "hello world ! %s\n\0";
printf(s,"c_acceleration");
return 0;
}
#include "stdio.h"
int main()
{
char *s = "hello world ! %s\n\0";
printf(s,"c_acceleration");
return 0;
}
[bo]受教,如醍醐灌顶![/bo]哈哈。。。。。
----------------解决方案--------------------------------------------------------
格式化字符的使用说明:
%d:输出整型数
%md:m为指定整型数的宽度,不够左端补以空格
%-md:m为指定整型数的宽度,不够右端补以空格
%ld:输出长整型数
%mld:同%md,%ld
%-mld:同%-md,%ld
%o:以八进制形式输出整数
%mo:同%md
%-mo:同%-md
%lo:以八进制形式输出长整数
%mlo:同%mo,%lo
%-mlo:同%-mld
%x : 以十六进制形式输出整数
%mx:同%md
%-mx:同%-md
%lx:以十六进制形式输出长整数
%mlx:同%mx,%lx
%-mlo:同%-mld
%u :输出无符号整数
%mu:同%md
%-mu:同%-md
%lu:输出无符号长整数
%mlu:同%mu,%lu
%-mlu:同%-mld
%c:输出一个字符
%mc:同%d
%s :输出字符串
%ms:同%md
%-ms:同%-md
%m.ns:m为指定字符串宽度(同%ms);n指定输入字符串的前n个字符,
当n大于字符串的长度,按字符串原样输出
%-m.ns:同%-ms,%m.ns
%f:输出单精度浮点数(默认输出小数点后6位)
%mf:同%md
%-mf:同%-md
%m.nf:n为指定输出小数点后位数
%-m.nf:同%-mf,%m.nf
%lf:输出双精度浮点数(默认输出小数点后6位),其它格式%mlf %-mlf %m.nlf %-m.nlf
%e(或E):指数形式输出实数(10为底),格式同%f
%g(或G):自动选f格或e格式
%Fp:格式退出指针的物理地址,形式:段地址:偏移地址
----------------解决方案--------------------------------------------------------
不懂就问是好的 但是我现在怀疑你连一本学习C语言的书都没有
printf("格式",变量);
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]夜火[/un] 在 2008-5-1 23:51 的发言:[/bo]
不懂就问是好的 但是我现在怀疑你连一本学习C语言的书都没有
printf("格式",变量);
不懂就问是好的 但是我现在怀疑你连一本学习C语言的书都没有
printf("格式",变量);
我怀疑你连c语言都不会。。。
----------------解决方案--------------------------------------------------------
其实还有很多像提问者这样的刚入门的,或者是还没怎么入门的朋友想搞搞编程,但还不知道门路。所以还得靠高手们多多帮助,这样我们的编程事业才会后继有人。感谢以上两位的倾囊相助!
----------------解决方案--------------------------------------------------------