試行錯誤した結果ここまで作りました。
しかし、error C2275: 'syusin' : typedef 識別子に、クラス メンバ アクセス演算子 (->) を使用しました。
'syusin' の宣言を確認してください。
というエラーとerror C2059: 構文エラー : 'type'がでてしまい、
どうも入出力どちらも格納先の指定が間違ってるのでは?というところまでは調べられたのですが、
具体的にどう直してよいのかわかりません。
/* ヘッダファイル */
typedef struct namae
{
char name[3][80];
}onamae;
typedef struct data
{
int nenrei[3];
int hgt[3];
int wgt[3];
}sts;
typedef struct ken
{
char ken[3][80];
char si[3][80];
char tyou[3][80];
onamae hito;
sts para;
}syusin;
/* main */
#include <stdio.h>
#include <ctype.h> /* toupper tulower isupper islower用*/
#include "gwh.h" /* 人間パラメータ設定表示処理用の自作ヘッダー */
void henkan16(void); /* 数値16進数変換表示処理 */
void henkanmoji(void); /* 文字列変換表示処理 */
void suti(void); /* 数値演算表示処理 */
void human(void); /* 人間パラメータ設定表示処理 */
int main()
{
int i; /* 処理番号 */
/* 処理はループさせる */
while(1)
{
printf("処理を選択して下さい\n");
printf("1:数値16進数変換表示処理\n");
printf("2:文字列変換表示処理\n");
printf("3:数値演算表示処理\n");
printf("4:人間パラメータ設定表示処理\n");
printf("処理番号:");
scanf(" %d", &i);
switch(i){
case 1:
/* 数値16進数変換表示処理を行う */
henkan16();
break;
case 2:
/* 文字列変換表示処理を行う */
henkanmoji();
break;
case 3:
/* 数値演算表示処理を行う */
suti();
break;
case 4:
/* 人間パラメータ設定表示処理を行う */
human();
break;
default:
printf("\nエラー\n\n\n\n");
}
}
}
/* 数値16進数変換表示処理 */
void henkan16(void)
{
int atai; /* 変換したい数値を格納する変数atai */
printf("数値を入力して下さい:");
scanf(" %d", &atai);
printf("\n16進数表示:%x\n\n\n\n", atai);
return;
}
/* 文字列変換表示処理 */
void henkanmoji(void)
{
int c; /* 配列hakoの要素数用の変数c */
int s; /* 変換した文字の値を格納する変数s */
char hako[80]; /* 入力された文字列を格納する変数hako */
/* 配列hakoに変換する文字列を入力する */
printf("文字列を入力して下さい\n");
printf("文字列:");
scanf("%s", hako);
/* 80文字分ループし、配列hakoの中の文字列を各々大文字、小文字に変換する。 */
for(c = 0; c < 80; c++)
{
/* 参照した文字が大文字だったとき */
if(isupper(hako[c]) != 0)
{
/* tolowerはint型の値を返すため、int型変数sに格納して出力する */
s = tolower(hako[c]);
printf("%c", s);
}
/* 参照した文字が小文字だったとき */
else if(islower(hako[c]) != 0)
{
/* toupperはint型の値を返すため、int型変数sに格納して出力する */
s = toupper(hako[c]);
printf("%c", s);
}
/* 参照した文字がアルファベット以外だったとき */
else
{
/* 参照した文字がヌルだった場合は、文字列が終了しているのでループから抜ける */
if(hako[c] == '\0')
{
break;
}
/* 参照した文字がアルファベット以外だったときはエラーを出力してループを抜ける */
printf("\nエラー");
break;
}
}
printf("\n\n\n");
return;
}
/* 数値演算表示処理 */
void suti(void)
{
int su; /* 入力された値を格納する変数su */
/* 数値を変数suに入力する */
printf("数値を入力して下さい\n");
printf("数値:");
scanf(" %d", &su);
/* 入力された値を0x0fで論理関した結果を出力 */
printf("%d\n\n\n", su & 0x0f);
/* 入力された値を0x0fで論理和した結果を出力 */
printf("%d\n\n\n", su | 0x0f);
/* 入力された値を0x0fで排他的論理和した結果を出力 */
printf("%d\n\n\n", su ^ 0x0f);
return;
}
/* 人間パラメータ設定表示処理 */
void human(void)
{
syusin plofir;
int j;
int no; /* 入力された処理番号を格納する変数no */
printf("処理を選択して下さい\n");
printf("1:情報入力\n2:情報表示");
scanf("%d", &no);
switch (no)
{
case 1:
for(j = 0; j < 4; j++)
{
printf("%d人目入力", j + 1);
printf("名前:");
scanf("%s", &syusin.hito.name[j]);
printf("年齢:");
scanf("%d", &syusin.para.nenrei[j]);
printf("身長:");
scanf("%d", &syusin.para.hgt[j]);
printf("体重:");
scanf("%d", &syusin.para.wgt[j]);
printf("在住している県:");
scanf("%s", syusin.ken[j]);
printf("在住している市:");
scanf("%s", syusin.si[j]);
printf("在住している町:");
scanf("%s", syusin.tyou[j]);
printf("\n\n");
}
break;
case 2:
for(j = 0; j < 4; j++)
{
printf("名前:%s\n", syusin.hito.name[j]);
printf("年齢:%d\n", syusin.para.nenrei[j]);
printf("身長:%d\n", syusin.para.hgt[j]);
printf("体重:%d\n", syusin.para.wgt[j]);
printf("在住している県:%s\n", syusin.ken[j]);
printf("在住している市:%s\n", syusin.si[j]);
printf("在住している町:%s\n\n\n", syusin.tyou[j]);
}
break;
default:
printf("エラー\n");
}
return;
}