Chinaunix首页 | 论坛 | 博客
  • 博客访问: 296065
  • 博文数量: 52
  • 博客积分: 814
  • 博客等级: 军士长
  • 技术积分: 689
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-21 19:41
文章分类
文章存档

2017年(1)

2016年(2)

2014年(1)

2012年(42)

2011年(6)

分类: LINUX

2012-05-09 16:24:20

其中errno是错误代码。其他两个是函数。streer(errno)和perror()两者都是输出errno对应的错误信息。但是输出格式不一样!
 
同样头文件也不一样。

#include // void perror(const char *msg);

#include // char *strerror(int errnum);

#include //errno

 

通过一段程序来看他们的区别:

// p_str_error.c
// perror , strerror 函数 , errno 测试

#include
#include
#include

#include

int main(int argc, char *argv[])
{
   FILE *fp;

   char *buf;

if( (fp = fopen(argv[1], "r")) == NULL)

   {
          perror("perror"); // 好方便
           errno = 12;
           printf("strerror: %s\n", strerror(errno)); //转换错误码为对应的错误信息

            exit(1); 

   }
 perror("perror");

 errno = 13;
 printf("strerror: %s\n", strerror(errno));
 
 fclose(fp); 

 return 0;

}
--------------------------------------------------------------------
./a.out 111

open失败则会输出:
0perror: No such file or directory

strerror: Cannot allocate memory

p0perror: Success

strerror: Permission denied

 

 

阅读(966) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~