免费注册 查看新帖 |

Chinaunix

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

c语言字符串问题(redhat) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-31 19:12 |只看该作者 |倒序浏览
以下是我的代码,实现字符的拷贝,当遇到\n, \t时打印出\\n和\\t,在redhat下面可以得到正确的输出但是总要报段错误,在windows的codeblocks下面运行正常。

尤其是添加s[j++] = '\n';这句话才能在redhat下面得到正确输出。

各位有时间请帮我看看,我自己用gdb单步调试是正确的,但是到打印结果时(printf("%s", s)s = '\\t';
输出截图在最后面。
  1. #include <stdio.h>

  2. void escape(char s[],char t[]);

  3. int main()
  4. {
  5.         char s[] = " ";
  6.         char t[] = "        Linux &        c\n";

  7.         printf("\n***Start***");
  8.         printf("%s\n", s);
  9.         printf("%s", t);
  10.         printf("***End***\n\n");

  11.         escape(s,t);
  12.         printf("%s", s);
  13.         return 0;
  14. }

  15. void escape(char s[],char t[])
  16. {
  17.         int i;
  18.         int j;

  19.         for(i = 0, j = 0; t[i] != '\0'; i++)
  20.         {
  21.                 switch(t[i])
  22.                 {
  23.                         case '\t':
  24.                                 s[j++] = '\\';
  25.                                 s[j++] = 't';
  26.                                 break;
  27.                         case '\n':
  28.                                 s[j++] = '\\';
  29.                                 s[j++] = 'n';
  30.                                 break;
  31.                         default:
  32.                                 s[j++] = t[i];
  33.                                 break;
  34.                 }
  35.         }
  36.         s[j++] = '\n';
  37.         s[j] = '\0';
  38. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2010-12-31 20:40 |只看该作者
段错误是因为数组越界了,而且char s[]  定义的常量字符数组

char s[]=" "   改成     char *s =malloc(sizeof(t)) ;

论坛徽章:
0
3 [报告]
发表于 2010-12-31 23:02 |只看该作者
初始化的问题吧

论坛徽章:
0
4 [报告]
发表于 2010-12-31 23:34 |只看该作者
回复 2# heut2009
非常感谢你,果然需要动态分配空间,但是为什么静态的不行呢,我在后面补了一个是s[j] = '\0';啊

论坛徽章:
0
5 [报告]
发表于 2010-12-31 23:34 |只看该作者
你没有分配数字的内存空间。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP