C++ strcmp返回0始终打开将字符串与反向进行比较
我让用户输入一个字符串,然后比较它的反面,但结果总是0,为什么C++ strcmp返回0始终打开将字符串与反向进行比较,c++,strcmp,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=strre
#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;
}
#包括
#包括
使用名称空间std;
int main()
{
char*str=新字符[100];
coutstrrev
在适当的位置反转字符串。因此它实际上修改了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;
}
intmain(){
char*str=新字符[100];
char*rev=new char[100];//反转的字符串需要内存
coutstrrev
在适当的位置反转字符串。因此它实际上修改了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;
}
intmain(){
char*str=新字符[100];
char*rev=new char[100];//反转的字符串需要内存
coutstrrev
在哪里声明?如果strrev()
修改其参数的内容并返回指向其参数的指针,则rev
和str
都指向同一缓冲区。strrev()
是Microsoft stuff,它不可移植。不是真正的Microsoft stuff,我记得在Borland和Watcom中也使用过它。strrev
声明在哪里?如果strrev()
修改其参数的内容并返回指向其参数的指针,则rev
和str
都指向同一缓冲区。strrev
是微软的东西,不可移植。不是真正的微软的东西,我记得在Borland和Watcom中也使用过。