如何转换char数组以将其与unsigned char数组进行比较?

时间:2014-11-01 16:21:36

标签: c arrays

我正在尝试施放s2以使测试通过。

我将可打印字符与unsigned 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();
}

2 个答案:

答案 0 :(得分:4)

无法将字符串(或其他数组)与C中的==进行比较。这是因为int myarray[8];之类的数组基本上可以被认为是一个名为{{的指针1}}存储第一个元素的地址。换句话说,myarray将比较数组的起始地址,而不是指向的实际数组项的内容

相反,您必须使用strcmpmemcmp函数,或使用==循环遍历每个索引并检查每个数组中的值是否匹配。

答案 1 :(得分:2)

您需要按如下方式更改代码。

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

            printf("Pass\n");
    }