C:无法比较字符

问题描述

我有如下C代码我有abcd作为输入,而我想要的输出aBcd

但是在line1[i] == "b"行,我得到一个错误,说我在比较指针和整数...为什么“ b”是整数?

我改用"b" == line1[i],但不起作用。我该如何解决?谢谢

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

int main(){

  char line1[10]="abcd";
  char line2[10];
    strcpy(line2,line1);

  int i;
  for (i = 0; i < 10; ++i)
  {
    if(line1[i] == "b"){
      line2[i] = "B";
    }
  }

  printf("%s",line2);
  return 0;
}

解决方法

这是不正确的:

 if (line1[i] == "b")

您正在比较字符,而不是字符串,因此应该是:

if (line1[i] == 'b')

您收到的错误消息:

我收到错误消息,说我正在比较指针和整数...为什么 “ b”是整数吗?

这实际上意味着“ b”是一个指针(它是char指针),而您的line1[i]是一个整数(实际上是一个char)。

您对此有相同的问题:

line2[i] = "B";  //<-- should be 'B' instead