strcmp总是在比较字符串和反向时返回0

时间:2013-09-17 07:20:18

标签: c++ strcmp

我正在让用户输入一个字符串,然后比较它的反向,但结果总是给0,为什么?

#include<iostream>
#include<string.h>
using namespace std;

int main()
{
    char *str=new char[100];
    cout<<"enter a string";
    cin.getline(str,100);
    int len=strlen(str);
    char *rev=strrev(str);
    int diff=strcmp(str,rev);
    cout<<diff;
    return 0;
}

1 个答案:

答案 0 :(得分:4)

strrev将字符串反转到位。所以它实际上修改了str指向的字符数组。如果你做printf("%s", str);,你会发现它已被逆转。

您应该复制该字符串并将其反转:

int main() {
    char *str = new char[100];
    char *rev = new char[100]; // You need memory for the reversed string

    cout << "enter a string";
    cin.getline(str, 100);

    strcpy(rev, str); // Make a copy of `str` called `rev`
    strrev(rev);      // Reverse it.

    int diff = strcmp(str, rev);

    cout << diff;
    return 0;
}