如何在C中比较char和char *

问题描述 投票:0回答:1

我不确定为什么这行不通,它什么也没打印。 csvArry中包含3个元素,而capList中包含4个元素。我想搜索capList以查看其中是否有与csvArray中的元素匹配的元素。

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



int main(int argc, char *argv[]) {


    char *csvArray[] = {"1000", "CAP_SYS_ADMIN", "CAP_SYS_RAW"};
    char *capList[] = {"CAP_SYS_SETFCAP", "CAP_SYS_SETPCAP", "CAP_SYS_ADMIN", "CAP_SYS_RAW"};

    int i = 0;
    int j;
    while(i<3){
          for(j=0;j<4;j++){
              if(strcmp(csvArray[i],capList[j]) == 0){
                        printf("Match");
              }
          }
          i++;
    }

  return 0;
}


c arrays loops comparison c-strings
1个回答
-1
投票

你去:

int main(int argc, char *argv[])
{

    char *csvArray[] = {"1000", "CAP_SYS_ADMIN", "CAP_SYS_RAW"};
    char *capList[] = {"CAP_SYS_SETFCAP", "CAP_SYS_SETPCAP", "CAP_SYS_ADMIN", "CAP_SYS_RAW"};

    int size = sizeof(csvArray) / sizeof(csvArray[0]);
    int sizeOfList = sizeof(capList) / sizeof(capList[0]);

    for (int i = 0; i < size; i++) {
        for (int j = 0; j < sizeOfList; j++) {
            if (csvArray[i] == capList[j]) {
                printf("%s Match\n", csvArray[i]);
            }
        }
    }

    return 0;
}

此程序试图找出哪些元素对于两个元素都是相同的,并且也会打印哪些元素是相同的。

输出

CAP_SYS_ADMIN Match
CAP_SYS_RAW Match
© www.soinside.com 2019 - 2024. All rights reserved.