C语言:使用字符指针的问题

LandY和C 2019-01-22 02:22:41
# include <stdio.h>

void str_cut(char * p , int m) ;

int main(void)
{
char * str ;

str = "hello word!" ;
str_cut(str , 3) ;

printf("%s\n" , str);
return 0 ;
}

void str_cut(char * p , int m)
{
for(;*(p + m) != '\0' ; p++)
{
*p = *(p + m) ;
}

*p = '\0' ;
}

编译无错,执行结果却不是理想结果。我就想知道哪里错了,为什么错了,给个合理的解释。
不要跟我说换其他的方法什么的,如果我换其他方法的话我就不会问这个问题了。
我只要是想通过这个问题,掌握字符指针的知识。
请大牛多多赐教,小弟感激不尽。
...全文
136 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2019-01-23
  • 打赏
  • 举报
回复
str = "hello word!" ;

"hello world!"是字符常量,因此不能修改,但是str_cut函数是对str进行写操作(因为是修改),所以会出现问题。解决办法:

char str[] = "hello word!";

因为由指针编程数组,数组是在栈上的空间,因此可以进行读写。
織田若雨 2019-01-22
  • 打赏
  • 举报
回复
main函数中应是*str="hello world!"
赵4老师 2019-01-22
  • 打赏
  • 举报
回复
#pragma comment(linker,"/SECTION:.rdata,RW")
//加这句可以让常量区可写,后果自负!
独孤过 2019-01-22
  • 打赏
  • 举报
回复
注意这句话 char *str = "hello word!"; str存放于栈区 "hello word!"存放于常量区,不允许随意修改 如果要测试的话,使用下面定义和初始化 char str[] = "hello word!";

69,369

社区成员

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

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