我试图通过调用函数来输出字符串的反转。我认为我的反向功能有问题。 我一直收到错误"并非所有控制路径都返回一个值。"
#include<iostream>
using std::cout;
using std::endl;
using std::cin;
int LengthofString( char *); // declaring prototype for length of the string
int ReverseD(char *);
int main()
{
char string1[100];
cout<<"Enter a string: ";
cin>>string1;
cout<<"Length of string is "<<LengthofString(string1)<<endl<<ReverseD(string1)<<endl;
system("PAUSE");
return 0;
}
int LengthofString( char *x)
{
int index;
for(index = 0; *x!='\0';x++,index++);
return index;
}
int reverse(char* y)
{
int ii, n;
n = LengthofString(y);
for(ii=0; ii<n/2;ii++) {
char temp;
temp = y[ii];
y[ii] = y[n - ii - 1];
y[n - ii] = temp;
return temp;
}
}
答案 0 :(得分:3)
在reverse
函数中,return
循环内部for
,如果符合条件,则可能无法执行。尝试将return语句移到循环之外。
您的返回变量也在循环范围内声明,因此您也需要更改它,但这至少会修复原始错误。
答案 1 :(得分:2)
您的reverse
函数非常错误:当您希望它反转字符串时,它如何返回int
?有几种方法可以解决它:
return
,然后创建函数void
。在打印前调用它,然后输出原始文件。char*
,然后返回y
。将return
语句移出循环。答案 2 :(得分:1)
当您传递空字符串或长度为1的字符串时,以下return
循环中的for
语句将不会被执行,
for(ii=0; ii<n/2;ii++) {
char temp;
temp = y[ii];
y[ii] = y[n - ii - 1];
y[n - ii] = temp;
return temp;
}
答案 3 :(得分:0)
int reverse(char* y)
{
int ii, n;
n = LengthofString(y);
for(ii=0; ii<n/2;ii++) {
char temp;
temp = y[ii];
y[ii] = y[n - ii - 1];
y[n - ii] = temp;
return temp;
}
//because here you done have a return call; return something
}
答案 4 :(得分:0)
除了已经存在的优秀答案之外,让我向您展示如何反转字符串 C ++方式:
#include <string>
#include <iostream>
#include <algorithm>
int main()
{
std::string s;
std::cin >> s;
std::reverse(s.begin(), s.end());
std::cout << s << std::endl;
return 0;
}
编辑:必须使用自己的函数不是在C ++中编写C代码的借口......
std::string reverseString(const std::string &input)
{
std::string res;
for (std::string::const_reverse_iterator it = input.rbegin(); it != input.rend(); it++)
res += *it;
return res;
}