#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
没人帮我看问题哇!
#3
撒的撒的撒的
#4
上一条测试一下有没有登陆,请无视
你这代码写的大家都震惊了,假设你的str是XYZ,前面三个位置的内存是BBB
所以连续内存是 BBBXYZ
你str--,str变成了BXY,这个时候再把X赋值给最后一个,成为BXX
然后再试图B赋值给BBX
注意你的BBB是没初始化的内存,随便一个空当然就炸了咯,砰!代码崩了
你这代码写的大家都震惊了,假设你的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;
}
还是不正确啊
#1
断点停在pstr[n-i] = ch;这了
#2
没人帮我看问题哇!
#3
撒的撒的撒的
#4
上一条测试一下有没有登陆,请无视
你这代码写的大家都震惊了,假设你的str是XYZ,前面三个位置的内存是BBB
所以连续内存是 BBBXYZ
你str--,str变成了BXY,这个时候再把X赋值给最后一个,成为BXX
然后再试图B赋值给BBX
注意你的BBB是没初始化的内存,随便一个空当然就炸了咯,砰!代码崩了
你这代码写的大家都震惊了,假设你的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;
}
还是不正确啊