使用C

时间:2015-10-24 08:10:52

标签: c warnings

我试图将用户输入与字符串进行比较,每次编译时,它都会给我这个警告:

  

警告:null参数,其中非null需要(参数2)

每个“if”语句都会出现此警告。我不知道它是否会影响实际结果,但我真的想知道如何摆脱它。这是有问题的代码:

void AddBorder(unsigned char R[WIDTH][HEIGHT], unsigned char G[WIDTH][HEIGHT], unsigned char B[WIDTH][HEIGHT],
                  char color[SLEN], int border_width)
{
  int x,y,a=0,b=0,c=0;
  printf("Enter border width:");
  scanf("%d", &border_width);
  printf("Availble border colors: black, white, red, green, blue, yellow, cyan, pink, orange.\n");
  printf("Select border color from the options:");
  scanf("%s", color);

  if (strcmp(color, "black" == 0))
  {
    a=0;
    b=0;
    c=0;
  }

  if (strcmp(color, "pink" == 0))
  {
    a=255;
    b=192;
    c=203;
  }
  if (strcmp(color, "white" == 0))
  {
    a=255;
    b=255;
    c=255;
  }

  for (y=0; y<HEIGHT; y++)
  {
    for (x=0; x<WIDTH; x++)
    {
      R[x][y]=0;
      G[x][y]=0;
      B[x][y]=0;
    }
  } 
}

5 个答案:

答案 0 :(得分:2)

if (strcmp(color, "black" == 0))
                              ^ wrong placement of )

您在此)中的展示位置是错误的 -

if (strcmp(color, "black") == 0)         //correct statement

类似于所有if条件

答案 1 :(得分:1)

你有几个例子,你的括号在错误的地方,例如

if (strcmp(color, "black" == 0))

应该是:

if (strcmp(color, "black") == 0)

答案 2 :(得分:1)

您已将== 0放在括号内。试试这个:

if (strcmp(color, "black") == 0)
{
    a=0;
    b=0;
    c=0;
}

if (strcmp(color, "pink") == 0)
{
    a=255;
    b=192;
    c=203;
}

if (strcmp(color, "white") == 0)
{
    a=255;
    b=255;
    c=255;
}

答案 3 :(得分:1)

您需要将if语句更改为

if (strcmp(color, "black") == 0)

因为,我相信你想要的是比较两个字符串,并检查strcmp()的返回值0

答案 4 :(得分:0)

问题在于if中的所有strcmp(颜色,“block”== 0)。而不是这个你必须使用strcmp(颜色,“黑色”)== 0.所以修改你的代码如下。 它现在不会发出警告。

void AddBorder(unsigned char R[WIDTH][HEIGHT], unsigned char G[WIDTH][HEIGHT], unsigned char B[WIDTH][HEIGHT],
                  char color[SLEN], int border_width)
{
  int x,y,a=0,b=0,c=0;
  printf("Enter border width:");
  scanf("%d", &border_width);
  printf("Availble border colors: black, white, red, green, blue, yellow, cyan, pink, orange.\n");
  printf("Select border color from the options:");
  scanf("%s", color);

  if (strcmp(color, "black") == 0)
  {
    a=0;
    b=0;
    c=0;
  }

  if (strcmp(color, "pink") == 0)
  {
    a=255;
    b=192;
    c=203;
  }
  if (strcmp(color, "white") == 0)
  {
    a=255;
    b=255;
    c=255;
  }

  for (y=0; y<HEIGHT; y++)
  {
    for (x=0; x<WIDTH; x++)
    {
      R[x][y]=0;
      G[x][y]=0;
      B[x][y]=0;
    }
  } 
}