0

我正在为 POS 机编写此代码

我将来自网络链接的返回数据设置为“坏”,以便我可以测试它是否真的有效。但是当我将结果与字符串“坏”进行比较时,它总是说它们不相等。当我将结果打印到屏幕上时购买,它显示两个结果都不好。

拜托我需要你的帮忙。下面的代码

void checklogin(void) {
    CURL *curl;
    CURLcode res;
        long timeout = 30;
        char buffer[50000];
    //Initializing the CURL module
    curl = curl_easy_init();

    if(curl){
    //Tell libcurl the URL
    curl_easy_setopt(curl,CURLOPT_URL, "http://website.org/login.php");
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "username=su&password=ch");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, myfunc);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, buffer);
        curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout);
        curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); //tell curl to output its progress

           res = curl_easy_perform(curl);

           CTOS_LCDTClearDisplay();

           char mai[30];
           char mai2[30];

           char *serverresponse = "bad";
           sprintf(mai2, "%s" , serverresponse);
           sprintf(mai, "%s" , buffer);

           if(mai2 == mai){
            CTOS_LCDTPrint("Invalid username");
            CTOS_KBDGet(&key); 
           }else{
               //loginname = buffer;
               //mainusername = username;
               CTOS_LCDTPrintXY(1, 1, "Login Success");
               CTOS_LCDTPrintXY(1, 2, "Welcome");
               CTOS_KBDGet(&key);
               }


    }
}
4

2 回答 2

1

您所做的比较在 C++ 中有效,但是对于 C,您需要strcmp()用于比较字符串。0如果您作为参数提供的两个字符串包含相同的内容,则返回值。另请记住,您可以在需要时使用其他strcmp()功能,例如stricmp()当您想要进行不区分大小写的比较时。

于 2013-02-13T10:12:11.623 回答
0

mai2 和 mai 是指向 char 数组的第一个字段的指针。由于这些是不同的数组,它们的地址当然是不同的。您想比较内容,因此您确实需要使用strcmp

#include <string.h>
strcmp("hello", "hello"); //0

如果两个 char 数组包含相同的内容,则结果将为 0。

if (strcmp(mai, mai2) == 0 ) {
    ...
}

-汉内斯

于 2013-02-13T07:37:09.357 回答