为什么这两个char阵列不相等



我有这两个char数组,它们在控制台上输出相同的值(桌面-KDOD9T),一个是从文件中读取的,另一个是通过winsock gethostname读取的。相比之下,它们并不一样。它说您无法访问该程序。

#include "pch.h"
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <iostream>
#include <string>
#include <fstream>
#include <WinSock2.h>
#pragma comment( lib, "Ws2_32.lib" )
int main()
{
    char word[255];
    std::fstream stream;
    stream.open("Text.txt");
    stream >> word;
    std::cout << word << "n";
    WSADATA wsa_Data;
    WSAStartup(0x101, &wsa_Data);
    char buffer[255];
    gethostname(buffer, 255);
    std::cout << buffer << std::endl;
    WSACleanup();
    if (word == buffer)
    {
        std::cout << "Welcome!n";
        for (int i = 0; i < 3; ++i)
        {
            std::cout << ".";
                Sleep(300);
        }
        std::cout << std::endl;
    }
    else
    {
        std::cout << "You can't access this program from that PC!n";
        Sleep(200);
        exit(1);
    }
    getchar();
    return 0;
}

数组没有可以比较的值。它们包含多个值。

当您比较两个阵列时,阵列腐烂到指针,您正在比较指针,以查看它们是否指向同一对象。当然,他们没有。

如果要比较每个字节,则可以使用memcmp之类的函数。如果要比较两个字符串,则可以使用strcmp

之类的函数

最新更新