小编use*_*105的帖子

Strcmp的行为与预期不符,比较两个不相等的字符串时返回0

我正在理解strcmp函数的奇怪行为,将通过以下代码进行说明:

#include <iostream> 
#include <cstring>

using namespace std;

int main()
{
    char *p = "no";

    cout << p << endl;                      //Output: no
    cout << &p << endl;                     //Output: 0x28ac64
    cout << strlen(p) << endl;              //Output: 2
    cout << strcmp(p, "no") << endl;        //Output: 0

    cin >> p;                               //Input: bo

    cout << p << endl;                      //Output: bo
    cout << &p << endl;                     //Output: 0x28ac64
    cout << strlen(p) << endl;              //Output: 2

    cout << strcmp(p, "no") << endl;        //Output: 0 …
Run Code Online (Sandbox Code Playgroud)

c++ cstring strcmp char-pointer

0
推荐指数
1
解决办法
518
查看次数

标签 统计

c++ ×1

char-pointer ×1

cstring ×1

strcmp ×1