我正在准备入门级面试。我试图扭转字符串中单词的顺序,但是我的输出是一堆毫无意义的垃圾。我认为这个问题可能是因为我为我的功能使用了“char *”?无论如何,继承人我的代码字符串中字的颠倒顺序
#include <iostream>
#include <string>
using namespace std;
char* reverse(char* str, int a, int b);
char* reversewords(char* str);
int main()
{
char str[] = "The interview is";
cout<<"Reverse is: "<<reversewords(str);
cin.ignore();
return 0;
}
char* reverse(char* str, int a, int b)
{
int length = a-b;
for (int i=a; i<b+1; i++)
{
char c =str[length-i-1];
str[length-i-1]=str[i];
str[i] = c;
}
return str;
}
char* reversewords(char* str)
{
int length = strlen(str);
int a=0;
int b=0;
while (b<length)
{
if (str[b]==' ' || b==length-1)
{
b=b-1;
reverse(str, a, b);
a=b+2;
b=a;
}
b++;
}
return str;
}
的[反话的字符串中的排序]可能重复(http://stackoverflow.com/questions/1009160/reverse-the-字符串排序) – tenfour
如果没有网页的警告,你甚至可以问这个问题,已经有100万次了? – tenfour
对于循环签名,不应该是:for(int i = a; i> b + 1; i - )'(使用'>'而不是'<'并递减'i')。 – 0x499602D2