Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5636
  • 博文数量: 3
  • 博客积分: 120
  • 博客等级: 入伍新兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-26 16:50
文章分类
文章存档

2011年(1)

2009年(1)

2008年(1)

我的朋友
最近访客

分类: LINUX

2008-06-27 17:53:54

一 printf 和fprintf 的关系
1 printf()
#include
int printf( const char *format, ... );
printf()函数根据format(格式)给出的格式打印输出到STDOUT(标准输出)和其它参数中.对于输出格式,有
%c 字符
%d 带符号整数
%i 带符号整数
%e 科学计数法, 使用小写"e"
%E 科学计数法, 使用大写"E"
%f 浮点数
%g 使用%e或%f中较短的一个
%G 使用%E或%f中较短的一个
%o 八进制
%s 一串字符 //后面对应的参数为字符串指针
%u 无符号整数
%x 无符号十六进制数, 用小写字母
%X 无符号十六进制数, 用大写字母
%p 一个指针
%n 参数应该是一个指向一个整数的指针
STDOUT是printf默认的输出设备,因为一个进程开始时候,默认是打开三个文件,这三个文件是STDIN,STDERR,STDOUT.
printf()的返回值是打印的字符数,如果发生错误则返回一个负值.
2 fprintf()
#include  
int fprintf( FILE *stream, const char *format, ... );
fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件.因此fprintf()可以使得信息输出到指定的文件.比如
    char name[20] = "Mary";
    FILE *out;
    out = fopen( "output.txt", "w" ); 
    if( out != NULL ) 
    fprintf( out, "Hello %s\n", name );
对于其输出格式参数,和printf()一样.
fprintf()和printf()一样工作. fprintf()的返回值是输出的字符数,发生错误时返回一个负值.
在有些地方,有这样的定义:printf(...)=fprintf(stdout,...).
二 errno全局变量
    为防止和正常的返回值混淆,系统调用并不直接返回错误码,而是将错误码放入一个名为errno的全局变量中。如果一个系统调用失败,你可以读出errno的值来确定问题所在。因此可以使用perror(const char *format);来打印出错信息,同时系统会打印出它相应的错误返回码.errno不同数值所代表的错误消息定义在errno.h中,可以通过命令"man 3 errno"来察看它们。需要注意的是,errno的值只在函数发生错误时设置,如果函数不发生错误,errno的值就无定义,并不会被置为0。另外,在处理errno前最好先把它的值存入另一个变量,因为在错误处理过程中,即使像printf()这样的函数出错时也会改变errno的值。
 
阅读(771) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Linux下的段错误产生的原因及调试方法

给主人留下些什么吧!~~