【问题标题】:i try to pass a string to a simple conversion function, but the function only gets the first character我尝试将字符串传递给一个简单的转换函数,但该函数只获取第一个字符
【发布时间】:2021-01-31 02:46:51
【问题描述】:

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";
             ^        ~~~~~

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

【问题讨论】:

  • 按照建议使用char * 作为函数头。
  • 函数conversion(char colour)不接受字符串,只接受一个charchar colour = "red";的定义也不对,试试char colour[] = "red";

标签: c string type-conversion


【解决方案1】:

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;
}

【讨论】:

    猜你喜欢
    • 2018-12-24
    • 2021-12-12
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    相关资源
    最近更新 更多