免费注册 查看新帖 |

Chinaunix

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

fprintf也会core dump [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-11 11:27 |只看该作者 |倒序浏览
程序一跑就崩溃, 刚刚调试出引起崩溃的bug


修改代码后ok了


  1. int detach_log(const char *filename, const char *p)
  2. {
  3.   FILE* fp;
  4.   fp=fopen(filename,"a+");
  5.   if(!fp) return -1;
  6.   
  7.   fprintf(fp,  p) ;
  8.   fclose(fp);
  9.   return 1;
  10. }
复制代码
改成
  1. int detach_log(const char *filename, const char *p)
  2. {
  3.   FILE* fp;
  4.   fp=fopen(filename,"a+");
  5.   if(!fp) return -1;
  6.   
  7.   fprintf(fp, "%s", p) ;
  8.   fclose(fp);
  9.   return 1;
  10. }
复制代码
就ok了


就是把 fprintf(fp,  p)  改成  fprintf(fp, "%s", p)

我以前经常给printf族的函数 传一个 字符串指针,难道我一直都做错了?

难道printf("%s",  p_str)  才是安全的?

论坛徽章:
0
2 [报告]
发表于 2010-05-11 11:36 |只看该作者
core dump是什么类型的原因? 内存越界,还是其他什么?

论坛徽章:
0
3 [报告]
发表于 2010-05-11 11:38 |只看该作者
是的,如果你确认传入的串不含格式,用fputs比较安全。。

论坛徽章:
0
4 [报告]
发表于 2010-05-11 11:38 |只看该作者
NAME

    fprintf, printf, snprintf, sprintf - print formatted output

SYNOPSIS

    #include <stdio.h>

    int fprintf(FILE *restrict stream, const char *restrict format, ...);
    int printf(const char *restrict format, ...);
    int snprintf(char *restrict s, size_t n,
           const char *restrict format, ...);
    int sprintf(char *restrict s, const char *restrict format, ...);

楼主为什么不查一下手册?

论坛徽章:
0
5 [报告]
发表于 2010-05-11 11:39 |只看该作者
本帖最后由 liangzhishao 于 2010-05-11 11:41 编辑

Segmentation fault: 11 (core dumped)


signal 11 :  segmentation violation


差不多   我见过的崩溃都是第11信号  还没见过由其他原因引起的崩溃

论坛徽章:
0
6 [报告]
发表于 2010-05-11 11:44 |只看该作者
回复 4# sunlan


    手册当然看,不过这种简单的问题却忽略了,
      fprintf(FILE * restrict stream, const char * restrict format, ...);
   只是以前写printf写的习惯了,  忘了它要解释 format 的格式, 不好的习惯。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP