0

我让用户输入一个字符串,然后比较它的反向,但它总是给出 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;
}
4

1 回答 1

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;
}
于 2013-09-17T07:25:56.610 回答