c语言中字符串不能更改么

andykuo 2010-06-19 09:43:11
我在做C和指针练习题 6.3(把字符串中的字符反向排列),代码如下

我测试 reverse_string函数时候 ,input设为字符数组可以正常运行,但是像下面这样子,input设为 char *input=“andy kuo” ,运行时候就会出现 Segmentation fault 错误 这是为什么 ,字符串不能更改么??


#include <stdio.h>

void reverse_string(char *str){
char *last_char;
for(last_char=str;*last_char!='\0';last_char++);
last_char--;
putchar(*last_char);putchar('\n');
while(str < last_char){
char temp;
temp = *str;
*str++ = *last_char;
*last_char-- = temp;
}
printf("%c",*str);
}

int
main(void){
char *input="andy kuo";
//int i=0;
//scanf("%s",input);
reverse_string(input);
printf("%s\n",input);
}
...全文
158 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2010-06-19
  • 打赏
  • 举报
回复
你可以在函数内部开一块内存来接收字符串再做处理
cattycat 2010-06-19
  • 打赏
  • 举报
回复
你这是常量字符串。用字符数组吧
Dstnoe 2010-06-19
  • 打赏
  • 举报
回复
char *p="I am Chinese.";
指针 P指向的是字符串常量,不能修改,想修改的话,就复制到字符数组里。
wuyu637 2010-06-19
  • 打赏
  • 举报
回复
常量字符创
Boover 2010-06-19
  • 打赏
  • 举报
回复
重复帖子
nampot2468 2010-06-19
  • 打赏
  • 举报
回复
char *input="andy kuo";
input指向静态存储区的内容,不能更改。

69,382

社区成员

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

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