【发布时间】:2021-10-04 05:01:37
【问题描述】:
#include "stdio.h"
#include "stdlib.h"
typedef enum lightSwitch {
OFF = 0,
ON
}lightSwitch;
void setLight(lightSwitch setting){
if(setting == 1){
printf("(v)\n =\n");
}
}
int main(void){
char *p = malloc(sizeof(lightSwitch));
printf("'ON' or 'OFF'?\n");
scanf("%s", p);
setLight(*p);
}
我不完全确定这段代码有什么问题。当用户输入“OFF”时,灯泡应该保持隐藏状态,但如果用户输入“ON”,则应该显示灯泡。
【问题讨论】:
-
枚举不是字符串
-
除此之外,您的意思是
if(setting == ON)?您没有使用您定义的enum值。 -
*p是来自用户的字符串的第一个字符,可能是 'O' -
枚举只是一个“掩码”或“映射”或任何您想用于整数的词,在这种情况下与
#define OFF 0和#define ON 1没有太大区别。您的代码似乎暗示您认为枚举将字符串映射到一个值,就好像字符串“OFF”解析为 0,如果您认为您对枚举的理解是错误的。
标签: c function pointers enums malloc