簡體   English   中英

如何轉換一個char數組與未簽名的char數組進行比較?

[英]how to cast a char array to compare it with unsigned char array?

我正在嘗試使用s2來使測試通過。

我將可打印字符和未簽名的char值一起存儲到s3中。

s2是一個測試字符串結果,旨在驗證可打印的char是否已正確裝入s3中。

#include <stdio.h>
#include <string.h>

#define test_string_len 2

union {
    char unsigned us[test_string_len];
    char          s1[test_string_len];  
} result;

main() {

    char *s2;
    s2=  "ab";         

    char unsigned s3[test_string_len];          
    s3[0] = 'a';
    s3[1] = 'b';    
    s3[2] = '\0';   

    memcpy (result.us, s3, test_string_len);                

    if ( result.s1 == s2)    {

            printf("Pass\n");
    }

    printf("s2 = %s\n", s2 );
    printf("s3 = %s\n", s3 );   
    printf("result.s1 = %s\n", s3 );
    printf("result.us = %s\n", result.us );

    getchar();
}

無法在C中將字符串(或其他數組)與==進行比較。這是因為諸如int myarray[8];類的數組int myarray[8]; 本質上可以被認為是一個名為myarray的指針,用於存儲第一個元素的地址。 換句話說, ==將比較數組的起始地址 ,而不是所指向的實際數組項的內容

相反,您必須使用strcmpmemcmp函數,或使用for()循環遍歷每個索引並檢查每個數組中的值是否匹配。

您需要按以下方式更改代碼。

 if(!strcmp( result.s1,s2))    {

            printf("Pass\n");
    }

暫無
暫無

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

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