【发布时间】:2022-07-26 21:54:16
【问题描述】:
请考虑以下代码。我在问这是否正确,是否缺少某些东西。有没有其他方法可以实现。
#include <stdio.h>
#include <string.h>
const char *getOrder (const char *day)
{
if (strncmp(day, "Monday", 7) == 0) {
return "first";
} else if (strncmp(day, "Tuesday", 7) == 0) {
return "second";
} else if (strncmp(day, "Wednesday", 9) == 0) {
return "third";
} else if (strncmp(day, "Thursday", 8) == 0) {
return "forth";
} else if (strncmp(day, "Friday", 6) == 0) {
return "fifth";
} else if (strncmp(day, "Saturday", 8) == 0) {
return "sixth";
} else if (strncmp(day, "Sunday", 6) == 0) {
return "seventh";
} else
return NULL;
}
int main()
{
const char* str = NULL;
str = getOrder ("Monday");
printf("str : %s\n", str);
return 0;
}
【问题讨论】:
-
只将
malloc和相关函数返回的内容传递给free。 -
您的代码中没有任何东西可以释放,因为没有动态内存分配。你如何定义“正确”?例如,
getOrder("Fridayear!!!!!")的预期输出是什么? -
@Zakk 字符串字面量的数据通常分配在静态数据区,而不是堆栈上。
-
对我来说看起来不错。但是你绝对可以过度设计这个
-
建议更改
return NULL;与return "No match";不匹配
标签: c function char constants free