C++求大神帮忙看一看啊

时间:2021-11-22 05:01:53
不多说代码贴出来:
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;


char* RotateRight(char *str,int k){

int i,n;
n=(int)strlen(str);
char *string = NULL;
string = str;
for(i=0;i<k;++i){
char ch=string[0];
string--;
string[n] = ch;
string[n+1] = '\0';
}
return string;
}


int main()
{
char *Str;
Str = "hello";
cout  << strlen(Str) << endl;
char * pstr = RotateRight(Str,3);
cout << pstr << endl;

/*int i;
for(i=0;i<5;++i){
cout << pstr[i];
}*/
getchar();
return 0;
}

6 个解决方案

#1


断点停在pstr[n-i] = ch;这了

#2


没人帮我看问题哇! C++求大神帮忙看一看啊

#3


撒的撒的撒的

#4


上一条测试一下有没有登陆,请无视

你这代码写的大家都震惊了,假设你的str是XYZ,前面三个位置的内存是BBB
所以连续内存是 BBBXYZ

你str--,str变成了BXY,这个时候再把X赋值给最后一个,成为BXX
然后再试图B赋值给BBX

注意你的BBB是没初始化的内存,随便一个空当然就炸了咯,砰!代码崩了

#5


你那个循环写得有问题吧?

#6


修改后的
#include "stdafx.h"
#include <string.h>
#include <stdlib.h>
#include <iostream>
using namespace std;



char* RotateRight(char *str,int k){

int i,n;
n=(int)strlen(str);
char *string =(char*)malloc(128);
string = str;
for(i=0;i<k;++i){
--string[0] = '0';
string[0] = string[n+1];
string[n+1] = '\0';
}
return string;
}


int main()
{

char c[5]={'h','e','l','l','o'};
cout  << c << "=" << sizeof(c) << endl;
char* pstr = RotateRight(c,3);
cout << pstr << endl;

getchar();
return 0;
}

还是不正确啊 C++求大神帮忙看一看啊

#1


断点停在pstr[n-i] = ch;这了

#2


没人帮我看问题哇! C++求大神帮忙看一看啊

#3


撒的撒的撒的

#4


上一条测试一下有没有登陆,请无视

你这代码写的大家都震惊了,假设你的str是XYZ,前面三个位置的内存是BBB
所以连续内存是 BBBXYZ

你str--,str变成了BXY,这个时候再把X赋值给最后一个,成为BXX
然后再试图B赋值给BBX

注意你的BBB是没初始化的内存,随便一个空当然就炸了咯,砰!代码崩了

#5


你那个循环写得有问题吧?

#6


修改后的
#include "stdafx.h"
#include <string.h>
#include <stdlib.h>
#include <iostream>
using namespace std;



char* RotateRight(char *str,int k){

int i,n;
n=(int)strlen(str);
char *string =(char*)malloc(128);
string = str;
for(i=0;i<k;++i){
--string[0] = '0';
string[0] = string[n+1];
string[n+1] = '\0';
}
return string;
}


int main()
{

char c[5]={'h','e','l','l','o'};
cout  << c << "=" << sizeof(c) << endl;
char* pstr = RotateRight(c,3);
cout << pstr << endl;

getchar();
return 0;
}

还是不正确啊 C++求大神帮忙看一看啊