免费注册 查看新帖 |

Chinaunix

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

[C] 一个字符串处理程序,core dump了,请帮忙看看是哪里出问题了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-10-21 17:01 |只看该作者 |正序浏览
本帖最后由 我是个野鸭子 于 2014-10-21 17:04 编辑

编译环境RHEL6.4+GCC环境
具体源代码如下:

  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. void main(void);
  4. char* itoa(int, char*, int);

  5. void main(void)
  6. {
  7.   int num = 100;
  8.   char str[25];

  9.   itoa(num, str, 10);
  10.   printf("The number 'num' is %d and the string 'str' is %s. \n", num, str);
  11. }

  12. char* itoa(int value, char* result, int base)
  13. {

  14.   char* ptr = result, *ptr1 = result, tmp_char;
  15.   int tmp_value;

  16.   //check that the base if valid
  17.   if (base < 2 || base > 36) { *result = '/0'; return result; }
  18.   do {
  19.     tmp_value = value;
  20.     *ptr++ = "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz"
  21.       [35 + (tmp_value - value * base)];

  22.   } while (value);

  23.   //apply negative sign
  24.   if (tmp_value < 0) *ptr++ = '-';
  25.   *ptr-- = '/0';

  26.   while (ptr1 < ptr)
  27.   {
  28.     tmp_char = *ptr;
  29.     *ptr-- = *ptr1;
  30.     *ptr1++ = tmp_char;
  31.   }


  32.   return result;
  33. }
复制代码
请问什么地方core dump了?
还有代码中如下行是什么意思?
    *ptr++ = "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz"
      [35 + (tmp_value - value * base)];

论坛徽章:
1
巨蟹座
日期:2014-03-18 23:44:30
3 [报告]
发表于 2014-10-22 23:02 |只看该作者
  1. "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz"
  2.       [35 + (tmp_value - value * base)];
复制代码
字符串表达式的结果 你可以当做一个指向这个串首地址的指针

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
2 [报告]
发表于 2014-10-22 08:56 |只看该作者
抄代码要严肃点儿
http://www.strudel.org.uk/itoa/
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP