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