求助~~~~~~~~~~~~~~~~~~~~!!!加长~~~~~~~~~~~~~~~~~~~!!

运算符科技 2007-05-18 04:54:56
#include "stdio.h"
#include "string.h"

#define ELBA "I am a student,do you know?"

int main()
{
char * pString = ELBA;
char ch;

int x = 0;
int max = strlen(pString);

printf("%s\n",pString);
while(x < max/2)
{
ch = pString[x];
pString[x] = pString[max - x - 1];
pString[max - x -1] = ch;

x++;
}

printf("%s\n",pString);
}

代码编译通过,但运行时崩溃,请指教!!谢谢!!
...全文
237 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
运算符科技 2007-05-18
  • 打赏
  • 举报
回复
谢谢几位!知道问题所在了.
eggqq007 2007-05-18
  • 打赏
  • 举报
回复
char * pString = ELBA;
就是声明一个指针指向ELBA的地址,但是这个地址存的数据是常量,不许改变。所以当你pString[x] = pString[max - x - 1];是就表明你要修改这个数据,所以会报错。
xlbdan 2007-05-18
  • 打赏
  • 举报
回复
错误的根源就在于对字符串常量进行了修改,这是不允许的
devil_binary 2007-05-18
  • 打赏
  • 举报
回复
同意freshui(五月的风)和jixingzhong(瞌睡虫·星辰)两位大哥的意见,现把我自己的一点拙见发表出来供交流使用....
程序如下(运行通过):
//C++
#include "string.h"
#include <iostream> //头文件
using namespace std; //命名空间使用


#define ELBA "I am a student,do you know?" //宏定义

int main()
{
char pString[] = ELBA ;
char ch ;

int x = 0;
int Max = strlen(pString) ;
cout << pString << endl ;

//用于字符的交换,其实可以写一个函数
for( int i = 0 ; i <= ( Max -1 ) / 2 ; ++i ) {
ch = pString[ i ] ;
pString[ i ] = pString[ Max - i -1 ] ;
pString[ Max - i - 1 ] = ch ;
}

cout << pString << endl ;
system("pause") ;
return 0 ;
}
dustcool 2007-05-18
  • 打赏
  • 举报
回复
jixingzhong
正解~
todototry 2007-05-18
  • 打赏
  • 举报
回复
char * pString = ELBA;
===========
指向常量区并不能修改数据
开辟栈内存char szbuff[1024] = "******************";
开辟堆内存char *ptrHep = new char[1024]; //... delete [] ptrHep;
即可以
jixingzhong 2007-05-18
  • 打赏
  • 举报
回复
char * pString = ELBA;
==》改为
char pString[] = ELBA;
freshui 2007-05-18
  • 打赏
  • 举报
回复
正确的:
#include "stdio.h"
#include "string.h"



int main()
{
char pString[] = "I am a student,do you know?";
char ch;

int x = 0;
int max = strlen(pString);

printf("%s\n",pString);
while(x < max/2)
{
ch = pString[x];
pString[x] = pString[max - x - 1];
pString[max - x -1] = ch;

x++;
}

printf("%s\n",pString);
}

定义一个数组就可以了
或者你再定义一个指针指向这个数组也行 只要不怕麻烦.
freshui 2007-05-18
  • 打赏
  • 举报
回复
呵呵
char * pString = ELBA;
指向的是 "I am a student,do you know?"

这是不可更改的常量字符串
你后面修改 pString[max - x -1] = ch;
当然出错了~!

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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