首页 > 解决方案 > 我尝试将字符串传递给一个简单的转换函数,但该函数只获取第一个字符

问题描述

conversion函数应该接收一个字符串(在这种情况下是一个颜色)并将其与另一个字符串(每种可能的颜色)进行比较,然后返回一个与该颜色相关的数字。

这是简单的代码

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

int conversion(char colour)
{
    printf("\n %s \n", colour);
    if (!(strcmp(&colour, "red")))
        return 0;
    else if (!(strcmp(&colour, "orange")))
        return 1;
    else if (!(strcmp(&colour, "yellow")))
        return 2;
    else if (!(strcmp(&colour, "green")))
        return 3;
    else if (!(strcmp(&colour, "blue")))
        return 4;
    else if (!(strcmp(&colour, "white")))
        return 5;
    else if (!(strcmp(&colour, "black")))
        return 6;
    else return -1;
}

int main(int argc, char *argv[])
{
    char colour = "red";
    int n;

    n = conversion(colour);

    printf("\n %d \n", n);

    return 0;
}

当我编译它时,我收到这些警告

prova.c:7:21: warning: format specifies type 'char *' but the argument has type
      'char' [-Wformat]
       ``` printf("\n %s \n", colour);
                   ~~      ^~~~~~
                   %c```
prova.c:27:7: warning: incompatible pointer to integer conversion initializing
      'char' with an expression of type 'char [4]' [-Wint-conversion]
      ``` char colour = "red";
             ^        ~~~~~ ```

  char colour = "red";
             ^        ~~~~~

在我看来,该函数仅获取指定格式的第一个字符原因。我该如何解决?

标签: cstringtype-conversion

解决方案


char只能容纳一个字符。您必须使用数组char来处理字符串。

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

int conversion(const char* colour)
{
    printf("\n %s \n", colour);
    if (!(strcmp(colour, "red")))
        return 0;
    else if (!(strcmp(colour, "orange")))
        return 1;
    else if (!(strcmp(colour, "yellow")))
        return 2;
    else if (!(strcmp(colour, "green")))
        return 3;
    else if (!(strcmp(colour, "blue")))
        return 4;
    else if (!(strcmp(colour, "white")))
        return 5;
    else if (!(strcmp(colour, "black")))
        return 6;
    else return -1;
}

int main(int argc, char *argv[])
{
    char colour[] = "red";
    int n;

    n = conversion(colour);

    printf("\n %d \n", n);

    return 0;
}

推荐阅读