[解決済み] C 言語の enum から値の代わりにテキストを表示する
2023-01-28 12:19:19
質問
int main()
{
enum Days{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};
Days TheDay;
int j = 0;
printf("Please enter the day of the week (0 to 6)\n");
scanf("%d",&j);
TheDay = Days(j);
//how to PRINT THE VALUES stored in TheDay
printf("%s",TheDay); // isnt working
return 0;
}
どのように解決するのですか?
C言語の列挙は、コード内で便利な名前を持つ数値です。これらは文字列ではなく、ソースコードで割り当てられた名前はプログラムにコンパイルされないため、実行時にアクセスすることはできません。
欲しいものを得るための唯一の方法は、列挙値を文字列に変換する関数を自分で書くことです。例えば、(ここでは、宣言を移動させたと仮定して
enum Days
の外側に
main
):
const char* getDayName(enum Days day)
{
switch (day)
{
case Sunday: return "Sunday";
case Monday: return "Monday";
/* etc... */
}
}
/* Then, later in main: */
printf("%s", getDayName(TheDay));
また、配列をマップとして使うこともできます、例えば
const char* dayNames[] = {"Sunday", "Monday", "Tuesday", /* ... etc ... */ };
/* ... */
printf("%s", dayNames[TheDay]);
しかし、ここではおそらく
Sunday = 0
を代入したいところでしょう...。C 標準がコンパイラに列挙を 0 から始めるよう要求しているかどうかは分かりませんが、ほとんどのコンパイラはそうしています (誰かがコメントでこれを確認または否定すると思います)。
関連
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] C#の[Flags]Enum属性の意味とは?
-
[解決済み] JavaScriptSerializer - 列挙型を文字列としてJSONシリアライズする
-
[解決済み] Pythonで'Enum'を表現するにはどうしたらいいですか?
-
[解決済み] LD_PRELOADのトリックとは何ですか?
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
コンパイルエラー:可変長オブジェクトが初期化されていない可能性があります。
-
[解決済み] C言語で%sを正しく使う - 超基本レベル
-
[解決済み] "static const" vs "#define" vs "enum"
-
[解決済み] mallocの結果はキャストするのですか?
-
[解決済み] C言語で関数をパラメータとして渡すにはどうすればよいですか?
-
[解決済み] printfは、フォーマット文字列の中に改行がないと、呼び出し後にフラッシュしないのはなぜですか?
-
[解決済み] printfにおけるdoubleの正しい書式指定子
-
[解決済み] C言語でオブジェクト指向のコードを書くとしたら、どのようにすればよいのでしょうか?[クローズド]
-
[解決済み] なぜC言語では構造体を頻繁にtypedefする必要があるのですか?
-
[解決済み] 講師が書いたC言語のファイルは、なぜ最初の行に#が一つ付いているのですか?