我在几行中得到了这个错误,并且不知道这个程序是如何工作的。 Beginer程序员在这里。任何帮助将不胜感激。
#include <iostream>
#include <cstring>
using namespace std;
char* find_greater(char* a, char b)
{
char* result;
if (strcmp(a, b) > 0)
result = a;
else
result = b;
return result;
}
int main()
{
char str1[10], str2[10];
str1[] = "zebra";
str2[] = "man";
cout << "Greater string is :" << find_greater(str1, str2) << endl;
return 0;
}
答案 0 :(得分:0)
看,那应该是那样的
您在函数参数中忘记了*
,它应该是char* b
#include<iostream>
#include<cstring>
char* find_greater(char* a, char* b)
{
if (strlen(a) > strlen(b)) //check length array
return a; // return array
return b;
}
int main()
{
char str1[] = "zebra";
char str2[] = "man";
std::cout << "Greater string is :" << find_greater(str1, str2) << endl;
return 0;
}
您之前添加到标签的C ++中的第二种可能性
#include<iostream>
#include <vector>
std::vector<char> find_greater(std::vector<char> a, std::vector<char> b)
{
if (a.size() > b.size())
return a;
return b;
}
int main()
{
std::vector<char> vec1{ 'w','w','w','w','w','w','w','w' };
std::vector<char> vec2{ 'w','w' };
std::cout << "Greater string is :";
for (const auto& itr : find_greater(vec1, vec2))
std::cout << itr;
std::cout << std::endl;
return 0;
}
和第三种解决方案(在c ++中可能是最好的)
#include <iostream>
#include <string>
std::string find_greater(const std::string& a, const std::string& b)
{
if (a.size() > b.size())
return a;
return b;
}
int main()
{
std::string str1{ "Monkey" };
std::string str2{ "Horse" };
std::cout << "Greater string is : " << find_greater(str1, str2) << std::endl;
return 0;
}
答案 1 :(得分:0)
愚蠢的错字:
char* find_greater(char* a, char* b)
// ^
更加关注您正在做的事情,并阅读您的代码。
此处解析错误:
char str1[10], str2[10];
str1[] = "zebra";
str2[] = "man";
你不能将字符串文字分配给这样的数组,即使你可以,str1[]
也不是。作为特殊情况,您可以初始化(仅),所以这样做:
char str1[10] = "zebra", str2[10] = "man";
修复那些,the code compiles and runs(尽管如其他答案中所探讨的那样,这实际上并不是最好的方法)。