C++错误"not all control paths return a value"
C++ error "not all control paths return a value"
我试图通过调用函数输出字符串的反向。我想我的逆函数有点问题。我一直得到错误"不是所有的控制路径返回一个值。"
#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!=' ';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;
}
}
在reverse
函数中,将return
放入for
循环中,如果满足条件,该循环可能不会执行。试着把return语句移出循环。
你的返回变量也在循环的作用域中声明,所以你也需要改变它,但这至少会修复你最初的错误。
您的reverse
函数是非常错误的:当您期望它反转字符串时,它如何返回int
?有几种方法可以修复它:
- 去掉
return
,使函数为void
。打印前调用,然后输出原件。 - 使其返回
char*
,返回y
。将return
语句移出循环。 - 原地不反转:复制字符串,然后反转;不要忘记为空终止符分配空间,并在完成后删除字符串的副本。
当您传递一个空字符串或长度为1的字符串时,for
循环中的return
语句将不会执行,
for(ii=0; ii<n/2;ii++) {
char temp;
temp = y[ii];
y[ii] = y[n - ii - 1];
y[n - ii] = temp;
return temp;
}
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
}
除了已经存在的优秀答案之外,让我向您展示如何用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;
}
相关文章:
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- C++函数中的精确"return"矩
- '[](std::list& list)<int>{return std::move(list)}(list)' 是否保证将 'list' 留空?
- 方法错误"not all control paths return a value"和方法不返回值
- GLFW glfwCreateWindowSurface return -7
- "Missing type specifier - int assumed"无法通过向主函数添加"return 0"来解决
- 如何解决类成员函数中的"return a value"错误?
- C++概念assignable_from不接受 const&-return 运算符=
- Malloc void return char 数组有时不起作用(Terry Davis 对 C++);
- 返回引用实例和非引用实例(return mystr & vs mystr)之间的区别是什么?
- 错误:调用 .. at return 语句时没有匹配函数
- 当你只使用 return 时,函数返回什么类型;在 c++ 中
- GLSL C++ glVertexAttribPointer & glDrawElements return GL_INVALID_OPERATION
- return ((fileatr & FILE_ATTRIBUTE_DIRECTORY) == 0);
- "Warning : No return statement in function returning non-void"是什么意思?
- 当出现错误ld return 1退出状态时,如何编译程序
- 使用flag、return、exception、goto或break中止过程
- 警告:"Not all control paths return a value" c++
- C++错误"not all control paths return a value"
- 如果。。否则警告" not all control paths return a value"