| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 887 人关注过本帖
标题:初学者的一个问题,关于Segmentation fault错误
取消只看楼主 加入收藏
lcao
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-10-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
初学者的一个问题,关于Segmentation fault错误
按道理,我应该可以修改字符串指针所指向的字符,代码如下:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

void strappend(register char *s, size_t len, char fill)
{
  register char *endpos;

  endpos = s+len;
  while (*s++);
  s--;
  while (s<endpos) *(s++) = fill;
  *(endpos) = '\0';
} /* strappend */



int  main()
{
  char  *s1 ="abbccdfdcdbbdcd";
  printf("s1=%s\n",s1);
  strappend(s1,10,'f');
  printf("s1=%s\n",s1);

 return 0;

}



我用gdb跟踪一下,出在*(endpos) = '\0'.
望大家解答一下,谢谢了。
搜索更多相关主题的帖子: fault Segmentation 
2009-11-13 21:02
lcao
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-10-15
收藏
得分:0 
以下是引用蓝色药剂在2009-11-14 14:41:10的发言:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

void strappend(register char *s, size_t len, char fill)
{
  register char *endpos;

  // endpos = s+len;                   // 按照你程序的 ...
char s1[1024] ="abbccdfdcdbbdcd";  对,改成字符数组就可以了。

程序的意思就是在字符串结尾添加字符
2009-11-14 19:58
lcao
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-10-15
收藏
得分:0 
以下是引用蓝色药剂在2009-11-14 14:41:10的发言:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

void strappend(register char *s, size_t len, char fill)
{
  register char *endpos;

  // endpos = s+len;                   // 按照你程序的 ...

// endpos = s+len;                   // 按照你程序的意图,应该在字符串结尾追加字符吧
  while (*s++);              
  s--;                       
  endpos = s+len                 不明白,s已经是末尾了,如果再加上len就指向strlen(s)+len的地方了,这个地方应该是非法了。





[ 本帖最后由 lcao 于 2009-11-14 21:58 编辑 ]
2009-11-14 20:05
快速回复:初学者的一个问题,关于Segmentation fault错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.055996 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved