字符指针赋值后能不能再给它后面加字符

please_call_me_J 2011-10-31 10:33:32
fun(char *str,int m){
int slen=strlen(str),i;
char *dstr;
for(i=m;i<slen;i++){
*(dstr+(i-m))=*(str+i);
}
printf("%s",dstr);
}

在str字符串中从第m个字符开始把它复制到dstr中。这样做输出来的结果不尽人意,还有乱码。我想问下:字符指针赋值后能不能再给它后面加字符

比如本来char *str="sdfjljlkdf";能不能写一个:str+*(strlen(str)+i)='X';其中的i从0到N。如果要实现这个,怎么来动态扩充呢
...全文
130 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
please_call_me_J 2011-10-31
  • 打赏
  • 举报
回复
汗,指针这玩意灵活是灵活,驾驭不住的感觉。。。。
LHappy1991 2011-10-31
  • 打赏
  • 举报
回复
一下是我的愚见
这个理论上是可以的随意,但是会造成溢出,或者改掉其他内存的数据。
这个要看你的char*str分配在哪里,如果分配在栈,str所指的空间还有没有剩余,如果有,那么可以在余下的空间加入,这样做一旦超过指针定义的空间大小造成溢出。如果在堆上分配则可以用先用realloc()函数改下str所指空间的大小,再进行操作。。。
自信男孩 2011-10-31
  • 打赏
  • 举报
回复
char *str="sdfjljlkdf";能不能写一个:str+*(strlen(str)+i)='X';其中的i从0到N。如果要实现这个,怎么来动态扩充呢。
你举这个例子是不能够在字符串后面添加字符的,因为char *str定义的字符串是只读的,不可以写。你可以使用字符数组(属于静态申请空间)和malloc动态申请空间来添加新的字符。当然字符数组的长度需要大于初始的字符长度。添加时别忘了留下一个字符的空间用于存储'\0',不然输出时结果会有乱码。
vilnies 2011-10-31
  • 打赏
  • 举报
回复
dstr这指针指着上帝了
please_call_me_J 2011-10-31
  • 打赏
  • 举报
回复
求高手指导,如果不能这么做我也就死了心了

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧