我用以下方式将两个字符串与strcmp进行比较:
long t=1011;
char tc[10], tcr[10];
ltoa(t,tc,10);
cout<<tc<<endl; //prints 1011
strcpy(tcr, strrev(tc));
cout<<tcr<<endl; //prints 1101
cout<<strcmp(tc,tcr);
这给出了0的结果,表示字符串相等。但是,当我尝试:
cout<<strcmp("1011", "1101"); // prints -1 thats okay
我得到-1的预期值。我做错了什么?我使用的是devc ++编译器版本4.9.9.2
答案 0 :(得分:2)
这取决于函数strrev
的定义方式,如果它反转了参数,那么结果是预期的,因为tc被反转了。
例如,函数strrev
可以通过以下方式声明
char * strrev( char *s );
并且参数的返回值和值将相等。
考虑到strrev
不是标准功能。
答案 1 :(得分:0)
如果你改变你的代码:
long t=1011;
char tc[10], tcr[10];
ltoa(t,tc,10);
strcpy(tcr, strrev(tc));
cout<<tc<<endl;
cout<<tcr<<endl;
cout<<strcmp(tc,tcr);
然后你会发现tc和tcr是一样的。 strrev将输入字符串反转到位,并且打印1101两次。