-3

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

4

2 回答 2

2

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

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

char * strrev( char *s );

并且返回值和参数的值将相等。

考虑到这strrev不是标准功能。

于 2014-06-05T18:09:04.790 回答
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。

于 2014-06-05T18:12:22.613 回答