大家来帮我看看这段程序的问题
#include <iostream>
#include <iomanip>
using namespace std;
const int Max = 200;
void strReverse(char* str,char *strRes)
{
char *stack[Max];
char *tem;
int index = 0;
int m = 0;
for(int i = 0;i <=strlen(str);i++)
{
if(str[i] == ' ' || i == 0)
{
tem = new char[i - index + 1];
strncpy(tem,str+index,i-index);
tem[i-index +1] = '\0 ';
index = i;
stack[m] = tem;
m++;
}
}
for(int j = m;j> 0;j--)
{
strcat(strRes,stack[j]);
}
}
int main()
{
char *str = "I am a student ";
char ret[50];
strReverse(str,ret);
system( "pause ");
return 0;
}
[解决办法]
char *str = "I am a student ";
永远不要写这样的句子
因为str指向的是常量字符串, 常量字符串是不允许修改的
解决方法之一是:
char str[] = "I am a student ";