前提・実現したいこと
構造体のメンバ変数?に格納した文字を比較したい
発生している問題・エラーメッセージ
構造体に格納した文字と比較したい文字が比較できない
該当のソースコード
C
1#define _CRT_SECURE_NO_WARNINGS 2#include <ctype.h> 3#include <stdio.h> 4#include <stdlib.h> 5#include <string.h> 6#include "conioex.h" 7 8#define MAX_MONSTERNAME (255) 9#define MAX_MONSTER (999) 10#define NOW_MONSTER (176) 11 12// 構造体 13typedef struct 14{ 15 ~省略~ 16 17 char Type[256]; 18 19 ~省略~ 20 21}MONSTER; 22 23MONSTER Monster[MAX_MONSTER]; 24 25MONSTER* pMonster = &Monster[0]; 26 27//プロトタイプ宣言 28void InputStatus(MONSTER*); 29void OutputStatus(MONSTER*, const char* a); 30 31int saidaisu; 32 33int main() 34{ 35 ~省略~ 36 //ステータス入力 37 for (int i = 0; i < saidaisu; i++) 38 { 39 printf("%d体目を入力してください\n", i + 1); 40 InputStatus(&pMonster[i]); 41 } 42 system("cls"); 43 //ステータス表示 44 OutputStatus(&pMonster[saidaisu - 1], FILENAME); 45 ~省略~ 46 return 0; 47} 48 49void InputStatus(MONSTER* p) 50{ 51 printf("タイプ:"); 52 scanf("%s", (&p->Type)); 53} 54 55void OutputStatus(MONSTER* p , const char* a) 56{ 57 for (int i = 0; i < saidaisu; saidaisu--) 58 { 59 if (pMonster[saidaisu - 1].Type == "赤") 60 { 61 fprintf(pFile, "%s", pMonster[saidaisu - 1].Type); 62 } 63 else if (pMonster[saidaisu - 1].Type == "青") 64 { 65 fprintf(pFile, "%s", pMonster[saidaisu - 1].Type); 66 } 67 else if (pMonster[saidaisu - 1].Type == "緑") 68 { 69 fprintf(pFile, "%s", pMonster[saidaisu - 1].Type); 70 } 71 else if (pMonster[saidaisu - 1].Type == "紫") 72 { 73 fprintf(pFile, "%s", pMonster[saidaisu - 1].Type); 74 } 75 else if (pMonster[saidaisu - 1].Type == "黄") 76 { 77 fprintf(pFile, "%s", pMonster[saidaisu - 1].Type); 78 } 79 else 80 { 81 fprintf(pFile, "なにこれ"); 82 } 83}
試したこと
pMonster[saidaisu - 1].Typeを()で囲んでみる
赤、青、緑、紫、黄、のそれぞれを""ではなく''で囲んでみる
()で囲んでみるのは意味ありませんでした
''で囲むと==に赤線が引かれて、オペランド型に互換性がありません("char*"と"int")と出ます
補足情報(FW/ツールのバージョンなど)
VisualStudio2022
Windowsデスクトップウィザード
回答3件
あなたの回答
tips
プレビュー