簡體   English   中英

為什么這兩個字符數組不相等?

[英]Why are these two char arrays not equal?

我有這兩個char數組,它們在控制台(DESKTOP-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類的函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM