我对编码非常陌生,并且正在参加在线课程而几乎没有帮助。我正在完成一项任务,创建了一系列将在以后使用的功能。在这一点上,我还没有学到任何关于点、数组或递归的知识。我对字符串的了解几乎仅限于“printf”函数。
话虽如此,我已经得到了关于函数“ranking_to_string”应该如何操作的描述:
此函数应将传入的 hand_ranking_t 枚举值转换为描述它的字符串。
这里的枚举类型是hand_ranking_t,它按照从STRAIGHT_FLUSH (0) 到NOTHING (8) 的值降序排列一手牌。话虽如此,这是我创建的函数,试图按照我的指示进行操作:
const char * ranking_to_string(hand_ranking_t r) {
switch (r) {
case STRAIGHT_FLUSH: printf("STRAIGHT_FLUSH\n"); break;
case FOUR_OF_A_KIND: printf("FOUR_OF_A_KIND\n"); break;
case FULL_HOUSE: printf("FULL_HOUSE\n"); break;
case FLUSH: printf("FLUSH\n"); break;
case STRAIGHT: printf("STRAIGHT\n"); break;
case THREE_OF_A_KIND: printf("THREE_OF_A_KIND\n"); break;
case TWO_PAIR: printf("TWO_PAIR\n"); break;
case PAIR: printf("PAIR\n"); break;
case NOTHING: printf("NOTHING\n"); break;
default: printf("Invalid thing\n"); break;
}
return EXIT_SUCCESS;
}
我想知道,我在函数末尾返回 EXIT_SUCCESS (0) 是否正确?还有另一种方法可以使用 printf 将输入的枚举值转换为字符串吗?
EXIT_SUCCESS
是一个宏,它将扩展到环境定义的指示器中,从main
(或通过exit
等)返回,以指示您的整个程序已成功完成它应该做的事情。它通常不在此上下文之外使用。
printf
用于将输出发送到与 关联的流stdout
。例如,您可能会调用printf
以在终端中显示文本。
你的函数应该代替return
的字符串文字,将通过调用者使用ranking_to_string
。
const char *ranking_to_string(hand_ranking_t r) {
switch (r) {
case STRAIGHT_FLUSH: return "STRAIGHT_FLUSH";
case FOUR_OF_A_KIND: return "FOUR_OF_A_KIND";
/* ... and so on ... */
default: return "Invalid thing";
}
}
一个示例程序:
#include <stdio.h>
typedef enum {
STRAIGHT_FLUSH,
FOUR_OF_A_KIND,
/* ... and so on ... */
} hand_ranking_t;
const char *ranking_to_string(hand_ranking_t r) {
switch (r) {
case STRAIGHT_FLUSH: return "STRAIGHT_FLUSH";
case FOUR_OF_A_KIND: return "FOUR_OF_A_KIND";
/* ... and so on ... */
default: return "Invalid thing";
}
}
int main(void) {
hand_ranking_t rank = FOUR_OF_A_KIND;
const char *rank_string = ranking_to_string(rank);
printf("My ranking is <%s>\n", rank_string);
}
输出:
My ranking is <FOUR_OF_A_KIND>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句