比较字符串与STRCMP函数的工作方式不同
compare strings with strcmp function works different
我以以下方式比较两个字符串与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被打印两次。
相关文章:
- 在 Eclipse 中添加库的工作方式是否与在 Visual Studio 中相同?
- OpenGL应用程序在不同的计算机上的工作方式不同
- 为什么我的代码在添加不相关的代码行后工作方式不同?
- wait_until在主线程而不是主线程中的工作方式不同吗? c ++
- 用于了解输入和输出流缓冲区实际工作方式的程序
- 查找函数在unordered_map中的工作方式是搜索键值
- 异步操作的 Asio 处理程序在其同步对应项正常工作时不会调用
- 尝试使用 Qt 库中的 QPixmap 将图像拆分为多个块。关于他的复制方法的工作方式,我有什么不明白的吗?
- 容器类别在STL中的工作方式
- Unity 的 HLSL/Cg 预处理器工作方式错误?
- 无法让我了解 cin.get 和 cout 在这里的工作方式
- 不了解C 集合的工作方式
- 有人可以解释C 操作员=此处的工作方式
- 了解 declval 在copy_assignment情况下的工作方式
- 打开文件的正确模式是什么,以便 seekp() 的工作方式与在默认模式下打开的文件相同
- 了解文件页在技术级别的工作方式
- 战俘的工作方式不同,详细解释
- 切换到新编译器后,SSCANF 的工作方式有所不同
- 我不明白放置新的工作方式以及如何释放内存
- 重载输入/输出运算符,为什么它以这种方式工作而不是以另一种方式工作