【发布时间】: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)不接受字符串,只接受一个char。char colour = "red";的定义也不对,试试char colour[] = "red";
标签: c string type-conversion