免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4035 | 回复: 12
打印 上一主题 下一主题

[函数] 请高手指点函数strerror_r [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-21 19:19 |只看该作者 |倒序浏览
我在man strerror_r查看的内容是
char *strerror_r(int errnum, char *buf, size_t len)
但是当我按一下方式调用时一直没能成功,不知什么原因,请高手指点。

#include <stdio.h>;
#include <errno.h>;
#include <string.h>;

char buf[256], *perr;

perr = strerror_r(EIO, buf, sizeof(buf));
if(perr)
{
  printf("EIO Message: %s\n", perr); /* 能显示正确的错误信息 */
  printf("EIO Message: %s\n", buf);  /* 什么都不显示 */
  printf("buf length: %d\n", strlen(buf)); /* 显示 buf length: 0 */
}

我用的Linux环境是Fedora Core 2, GCC 3.3.3
我的邮箱:bluesoho@163.com
我是Linux菜鸟,望高手不吝赐教。   

论坛徽章:
1
15-16赛季CBA联赛之四川
日期:2016-02-15 17:12:32
2 [报告]
发表于 2004-07-21 19:38 |只看该作者

请高手指点函数strerror_r

buf 里面有东西!?还有strlen(buf)?没有东西会有长度?

论坛徽章:
0
3 [报告]
发表于 2004-07-21 20:14 |只看该作者

请高手指点函数strerror_r

按照man里的说明buf里应该是错误字符串
但是buf里什么都没有(没准只有一个NULL)
所以strlen(buf)返回0,这是错误的,但是不知道是什么原因

论坛徽章:
0
4 [报告]
发表于 2004-07-22 09:36 |只看该作者

请高手指点函数strerror_r

char *strerror_r(int errnum, char *buf, size_t len) 存在buf中的如果buf太小,那buf里面通常只有null

char *strerror_r(int errnum, char *buf, size_t len) 存在buf中的字福串是出错的描述,
远远大于你你看到的 input/output error ;

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2004-07-22 10:58 |只看该作者

请高手指点函数strerror_r

main函数在哪里啊?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2004-07-22 11:12 |只看该作者

请高手指点函数strerror_r

char *strerror(int errnum);
       int strerror_r(int errnum, char *buf, size_t n);

返回的明明是个int嘛。

可以像楼主那样使用吗?可能buf的第一个字符误是'\0'了,导致打也打不出来,strlen也不出来。

论坛徽章:
0
7 [报告]
发表于 2004-07-22 11:24 |只看该作者

请高手指点函数strerror_r

char *strerror_r(int errnum, char *buf, size_t len) 存在buf中的如果buf太小,那buf里面通常只有null

真的么?麻烦找到证据,我觉得返回null的原因是因为strerror_r中发生异常。

论坛徽章:
0
8 [报告]
发表于 2004-07-22 11:42 |只看该作者

请高手指点函数strerror_r

buf的大小绝对是够了,因为返回的指针来显示的化也就是input/output error
只是通过buf来取的化,就什么都取不了。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2004-07-22 11:50 |只看该作者

请高手指点函数strerror_r

你的man页上的原型是这样的吗?
我看到的怎么是返回int类型?

论坛徽章:
0
10 [报告]
发表于 2004-07-22 11:54 |只看该作者

请高手指点函数strerror_r

buf好像够
各位继续把
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP