C - 将char与字符串进行比较

时间:2015-09-22 05:30:26

标签: c string char

我知道char" c"和2-D字符串数组" stringArray [0] [0]"都是" 0"并且平等。但是,我在比较它们时遇到了麻烦。

#include <stdio.h>

int main(){

char c = '0';
const char *stringArray[2][2] = {"0","1"},{"2","3"};

printf("%d\n",c); // prints 0
printf("%s\n",stringArray[0][0]); // prints 0

if(c == stringArray[0][0][0]){ // compiler threw an error with stringArray[0][0]
    printf("Success!\n"); // does not print success
}


return 0;
}

2 个答案:

答案 0 :(得分:0)

我认为它解释了一切:)

printf("%d\n", stringArray[0][0]);
printf("%d\n", '0');
printf("%d\n", stringArray[0][0][0]);
printf("%d\n", *stringArray[0][0]);

./a.out
182304636
48
48
48

试试这个

if('0' == *stringArray[0][0]){ 
    printf("Success!\n"); 
}

./a.out
Success!

答案 1 :(得分:0)

使用初始化程序列表(添加两个大括号)修复编译器错误后,它可以正常工作。更正后的代码:

#include <stdio.h>

int main (void){

  char c = '0';
  const char *stringArray[2][2] = {{"0","1"},{"2","3"}};

  printf("%d\n",c); // prints 48
  printf("%s\n",stringArray[0][0]);

  if(c == stringArray[0][0][0]){
      printf("Success!\n");
  }


  return 0;
}

按预期输出:

48
0
Success!