比较字符串与STRCMP函数的工作方式不同

compare strings with strcmp function works different

本文关键字:工作 方式不 函数 字符串 STRCMP 比较      更新时间:2023-10-16

我以以下方式比较两个字符串与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

这取决于函数strrev是如何定义的,如果它在适当的位置反转参数,那么结果是预期的,因为tc被反转了。

例如,函数strrev可以如下方式声明

char * strrev( char *s );

,返回值与实参的值相等。

考虑strrev不是标准函数

如果像这样修改代码:

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被打印两次。