(C) 我是否正确地将枚举类型转换为字符串?

奎因

我对编码非常陌生,并且正在参加在线课程而几乎没有帮助。我正在完成一项任务,创建了一系列将在以后使用的功能。在这一点上,我还没有学到任何关于点、数组或递归的知识。我对字符串的了解几乎仅限于“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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我无法在 C# 中正确地将字符串转换为 Int

如何正确地将 Rust 字符串转换为 C 字符串?

如何正确地将字符串转换为 url?C#

C ++将字符串转换为枚举?

如何正确地将字符串从Unity编组到C / C ++?

在C ++中正确地将`void *`转换为整数

如何正确地将 C 中任何类型的数据与指针进行比较并将类型转换为 char

C ++将字符串转换为类型名

C# 无法将类型转换为字符串

C宏将字符串转换为pascal字符串类型

如何正确地将字符串中的转义符转义以在C中获得JSON兼容格式?

有没有简单的方法可以将枚举类转换为字符串(C ++)?

正确地将C ++ long转换为C#int

在C#中将字符串转换为枚举

这段代码是否正确地从Objective-C转换为Swift?

是否有任何(可逆)方式(在c#中)将字符串转换为较小的字符串,当我说较小时,我的意思是“长度减少”?

如何正确地将返回的JSON转换为C#类?

安全地将int转换为C中的字符串

C#-WinRT-将IPv4地址从uint转换为字符串?

如何简单地将浮点数转换为c中的字符串?

c#将字符串值转换为十进制的正确方法

C#将Facebook Response转换为正确的编码字符串

CS0029 C#'无法将类型string []隐式转换为字符串'

无法将类型void隐式转换为字符串C#

将十六进制值转换为C中字符串类型的ip地址。

C#/.NET 将字符串转换为引用 DLL 类的可用类型

C ++:将C字符串转换为std:string

将C ++字符串操作转换为C的问题

在C#中将字符串转换为类型