在strcmp中无效使用void表达式

时间:2014-07-15 16:08:30

标签: c++ strcmp

我希望检查两个字符串是否是彼此的排列。我使用以下代码:

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;

void sort(char *str)
{
    char temp;
    for(int i=0;i<strlen(str);i++)
    {
        if(str[i]>str[i+1])
        {
            temp=str[i];
            str[i]=str[i+1];
            str[i+1]=temp;
        }
    }
}

int main()
{
    char string1[10],string2[10];
    int val;
    cout<<"Enter first string";
    gets(string1);
    cout<<"Enter second string";
    gets(string2);
    val = strcmp(sort(string1),sort(string2));
    if(val==0)
    {
        cout<<"Same strings"<<endl;
    }
    else 
    {
        cout<<"Different Strings"<<endl;
    }
    return 0;
}

但是我得到了一个&#34;无效使用void表达式错误&#34;在strcmp线。我该如何解决 ? 感谢

3 个答案:

答案 0 :(得分:2)

看起来你想在排序后比较字符串。假设您的sort函数做了正确的事情,您需要在排序之后比较字符串

sort(string1);
sort(string2);
val = strcmp(string1, string2);

错误的原因是您的sort函数返回void。因此,您有效地将void参数传递给strcmp。那无能为力。

在C ++中执行此操作的方法是使用std::string,并调用std::sort

std::string string1, string2;
std::cout << "Enter first string";
std::cin >> string1;
std::cout << "Enter second string";
std::cin >> string2;
std::sort(string1.begin(), string1.end());
std::sort(string2.begin(), string2.end());
bool val = string1 == string2;

答案 1 :(得分:0)

sort不返回任何内容(void),因此其返回值不能作为strcmp的参数。

sort(string1);
sort(string2);
val = strcmp(string1, string2);

答案 2 :(得分:0)

strcmp void可以sort()返回sort()。您希望首先strcmp然后sort(string1); sort(string2); val = strcmp(string1, string2); 排序的字符串,例如:

{{1}}